Git 忘记了我正在 merge 的事实

标签 git

我刚刚完成了一个非常困难的 merge ,但在 merge 期间的某个时候我做了一些导致 git 失去对我正在 merge 的事实的跟踪(我可能做了 git reset 或其他事情)。

现在我在本地拥有的所有文件都已正确 merge ,但我无法完成 merge ,因为 git 不知道我正在 merge 。知道如何摆脱这个问题吗? merge 花了很长时间,所以我不想手动再做一次。基本上我想保持本地状态不变,但只是通知 git 它应该创建一个 merge 提交(从当前分支和特定的其他分支)而不是常规提交。

最佳答案

Git 寻找 reference调用 MERGE_HEAD1 来确定下一次提交是否应该是 merge 提交。此引用应指向分支的尖端以 merge 到当前分支(即 target 分支)。

在您的情况下,您可以使用 update-ref 自己创建 MERGE_HEAD命令:

git update-ref MERGE_HEAD $(git rev-parse <target-branch>)
git merge --continue

MERGE_HEAD 在 merge 操作结束时自动删除,无论它是完成还是中止。


1 这只不过是一个 text file.git 目录中,真的。

关于Git 忘记了我正在 merge 的事实,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63578340/

相关文章:

python - 如何使用 GitPython 进行 pull ?

git - 为什么 git pull --rebase 在重播现有提交时失败?

git-credential-winstore 提示不适用于自托管存储库

git - 'git merge'具体是如何工作的?

node.js - Ionic 和 Cordova 已安装,但命令无法识别

git - .gitignore 异常(exception)是包含额外的文件

python - 是否有 git Shortlog 的 python 接口(interface)?

windows - 用于在 Windows 上进行符号链接(symbolic link)转换的 Git Hook

git - 失败的 git 替换 : replace depth too high for object

GitLab 重命名分支并重新开始