我有一个git仓库,有两个分支:master
和new_feature
。new_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"