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

现在我的暂存区充满了我想还原的 origin/master 的更改,但是如果我取消暂存它们,它们将与我未提交的未暂存更改混合在一起。

我该如何补救这种情况?

最佳答案

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

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

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

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

    10-14 23:49
    查看更多