Git - 搞乱之后回滚所有本地更改

时间:2017-04-25 07:24:09

标签: git github git-branch branching-and-merging

我无法找到问题的相关答案。我现在有两个分支机构:

  • master
  • develop

提交并推送到服务器后所有修改(到develop分支)我想用master分支更新develop分支。在masterdevelop合并master之后,我意外地搞砸了 - git reset --hard HEAD现在拥有来自两个分支的所有内容,而这不是我想要的。

如何恢复本地仓库中的所有内容?我已经尝试了strcmp,但似乎没有帮助。

3 个答案:

答案 0 :(得分:3)

解决方案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>

注意:您可能会遇到一些必须手动取消合并的冲突,就像正常合并时一样。

答案 1 :(得分:2)

您可以尝试签出特定提交:

git checkout [revision-hash] .

在合并之前传递提交的哈希值

答案 2 :(得分:2)

目前已检出主分支:

git reset --hard develop

将切换到开发分支,丢失所有来自master的更改,除了那些已经包含在develop分支中的更改。