Git push commit到不同的分支



我有一个git仓库,有两个分支:masternew_featurenew_feature分支是基于master创建的,以实现一个新特性,因此在实现这个新特性之前,它们是相同的。

现在我实现了这个新特性,并意外地在master分支中提交了这些更改,因为这个分支仍然是本地签出的。在推送到远程之前,我意识到我在错误的分支上提交了更改。如果我现在签出new_feature,更改不会出现。

我如何撤销这个提交到master和重做同样的提交到new_feature?

转到意外提交代码的分支

git checkout master

则重置为最新头部

git reset HEAD-1

您将在master分支中得到您的更改,然后签出到new_feature分支并提交您的更改。

第一种方法,你将主分支合并到特性分支中以更新最新的代码,然后在主分支上你需要重置之前提交的代码on feature branch

git merge master

on master branch

git reset --hard HEAD^1

第二种方法:使用git cherry-pick查找主分支上的最新提交信息

git reflog

check out to feature branch to pick commit above

git cherry-pick commithasid

checkout到主分支并删除错误提交

git reset --hard HEAD^

第三种方法:使用git stash

在主分支上取消提交并保存工作树中的更改

git reset --mixed HEAD^`

将这些保存到清理工作树(主分支)

git stash

push changes into feature branch

git checkout feature-branch
git stash pop
git add .
git commit -m "message"