git - pull 而不是 fetch - 不小心将远程 master merge 到本地分支

标签 git

我只是执行了 git pull 而不是 git fetch。我在一个本地分支中,我不想与 origin/master merge 。此外,我还有一些未提交的更改。

现在我的暂存区域充满了来自 origin/master 的更改我想恢复,但如果我取消暂存它们,它们将与我未提交的更改混合在未暂存中。

我该如何补救这种情况?

最佳答案

我假设整个困惑的变化是由于您的 merge 冲突造成的。我建议做的是。

  1. 提交 merge 的更改(完成)。你最终会得到一个提交,因为这是暂时的(不要推送!!!)
  2. git stash您未提交的更改,以免我们丢失它们。
  3. git log -3 ,这将显示您的 merge 提交以及之前的 2 次提交。在 merge 提交中,您将看到 2 个 SHAS。一个是来自 origin/master 的最新提交,另一个是您分支上的最后一次提交。
  4. git reset --hard <SHA of YOUR last commit>这会将您的分支重置为 merge 之前的状态,并删除您从 master 引入的所有提交/更改。
  5. git stash pop将未提交的更改返回到您的分支。

因为您的更改都在本地分支上,所以您可以修改历史记录以使事情恢复到您想要的状态而不会出现任何问题。如果有任何您真正想要的暂存文件,请执行 git reset -- <filenames>取消暂存它们,然后按照上述步骤操作。

关于git - pull 而不是 fetch - 不小心将远程 master merge 到本地分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22696361/

相关文章:

git - Symfony2 项目与 Git : Best approach?

c# - 引入 Visual Studio 2015 的问题

git - 对 git blame 使用与其他命令相同的提交缩写长度

git - 文件不断返回

ruby - Chef Recipe 错误 : Error Resolving Cookbooks for Run List

python - 如何获取文件系统上文件的内容 'filter' ?

windows - 设置 Jenkins 时权限被拒绝(公钥)

git - 使用 gitignore 忽略(但不删除)文件

bash - Github 操作 - 错误 : Process completed with exit code 1

git - 如何管理与 git 子模块的冲突?