我该如何处理搞乱主人和功能分支的问题?

时间:2017-04-20 23:16:17

标签: git

我从主分支创建了一个功能分支,进行了一些更改。 然后我忘了上演并将它们提交到功能分支中,并且暂时没有触及存储库。

最近, 我回到了存储库,没有记住我做了什么,并切换到主分支。  我想在那时,更改仍然在工作目录中,并且我不小心将更改提交到主分支。

现在当我切换到功能分支时,功能分支没有变化,即就像原始主分支一样,并且主分支具有变化,即就像功能分支应该具有的那样。 我做了一个git diff feature..master,它们之间的唯一区别就是变化。

如何纠正错误?

感谢。

2 个答案:

答案 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)

我认为你想完成两件事:

  1. 将您意外提交的更改移至master,以便它们位于feature
  2. master重置回原来的位置。
  3. 以下是您的工作方式:

    1. 创建当前master的临时分支:

      $ git checkout -b temp master
      
    2. 将master重置为一次提交:

      $ git checkout master
      $ git reset --hard HEAD~1
      
    3. 从功能分支顶部的临时分支移动提交:

      $ git checkout temp
      $ git rebase --onto feature master
      
    4. 移动要素分支以包含所有更改:

      $ git checkout feature
      $ git merge temp
      
    5. 删除临时分支:

      $ git branch -d temp