我从主分支创建了一个功能分支,进行了一些更改。 然后我忘了上演并将它们提交到功能分支中,并且暂时没有触及存储库。
最近, 我回到了存储库,没有记住我做了什么,并切换到主分支。 我想在那时,更改仍然在工作目录中,并且我不小心将更改提交到主分支。
现在当我切换到功能分支时,功能分支没有变化,即就像原始主分支一样,并且主分支具有变化,即就像功能分支应该具有的那样。
我做了一个git diff feature..master
,它们之间的唯一区别就是变化。
如何纠正错误?
感谢。
答案 0 :(得分:1)
我会这样做:
git checkout master
git branch -f feature # move feature pointer to the commit it should be on
git reset --hard HEAD~1 # set master one revision back, where it should be
答案 1 :(得分:1)
我认为你想完成两件事:
master
,以便它们位于feature
。master
重置回原来的位置。以下是您的工作方式:
创建当前master
的临时分支:
$ git checkout -b temp master
将master重置为一次提交:
$ git checkout master
$ git reset --hard HEAD~1
从功能分支顶部的临时分支移动提交:
$ git checkout temp
$ git rebase --onto feature master
移动要素分支以包含所有更改:
$ git checkout feature
$ git merge temp
删除临时分支:
$ git branch -d temp