我只是执行了 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/