2017-04-25 146 views
1

我找不到任何相关问题的答案。我目前所面对的两个分支:Git - 混乱后回滚所有本地更改

  • master
  • develop

后COMMITED和推到服务器的所有修改(以develop分支),我想用一个develop分支更新master分支。无意中,我已经搞乱了,在mergin masterdevelop - master现在拥有一切从两个分支,这不是我想要的。

如何恢复本地回购中的所有内容?我试过git reset --hard HEAD,但它似乎没有帮助。

回答

2

解决方案1提交通行证哈希:

您可以将您的分支恢复到状态时,它是在合并之前,如果你发现它的提交。

使用git reflog,它会列出您拥有的所有HEAD。 我发现git reflog --relative-date非常有用,因为它显示了每次更改发生前多长时间。

一旦你发现提交只是做一个git reset --hard <commit id>和你的分支将像以前一样。


解决方案2:

你可以简单地git revert这次合并提交像这样:

git checkout BRANCH_NAME 
git revert -m 1 <merge_commit_sha> 

注:这可能是你最终会与一些冲突,你必须要手动取消合并,就像正常合并时一样。

2

你可以尝试签具体承诺:

git checkout [revision-hash] . 

从合并之前

+0

它不会帮助不幸......我已经搞乱了'develop'分支现在...是不是有什么东西想忽略一切,恢复到特定的版本,而不留下实际的文件就地? – aspirinemaga

+0

只删除整个本地项目,并从远程git克隆回来为我工作。 – aspirinemaga

2

随着当前已签出master分支:

git reset --hard develop 

会切换到开发分支从主失去所有的变化,除了那些已经被列入发展分支。