好的,所以我非常喜欢git rerere命令。虽然,我还没有真正使用它,除了让它自动神奇地记录我的冲突并为我解决它们。但是,我确实搞砸了我的一个冲突解决方案(在最新版本中重新定义了一个非常陈旧的功能分支)。
feature -> a - b - c - d
release -> e - f - g - h
rebase/feature -> e - f - g - h - a' - b' - c' - d'
所以,比方说b'有一个不正确的合并(感谢我!),我想重新录制它。我该怎么办?我已经看到了Rerere Your Boat中提到的git checkout --conflict选项,但我不清楚它是如何工作的,如果它适用于此处。也许我必须检查合并冲突状态并在我正确解决此冲突后运行git rerere?
通常情况下,我只会提交rebase分支的提示,但它只是扔掉了。我只是提前处理冲突,因此当我与该功能团队同步时,我们将所需的时间最小化。有意义吗?
答案 0 :(得分:33)
要简单删除所有以前的rerere
分辨率,请运行rm -rf .git/rr-cache
以删除缓存。
对于特定合并,您可以通过重新执行合并并允许rerere
在工作树中应用其记录的分辨率来告诉rerere
忘记记录的分辨率。
您可以查看a'
然后执行git merge b
以重新回到那种情况(因为您指定了{{1}的提交哈希值,您可能会检查分离的头部所以要注意你不在分支上。)
然后使用a'
在哪里指定应该忘记记录的冲突解决方案的文件。
git rerere forget FILE-WITH-BAD-MERGE
重置rerere为当前冲突记录的冲突解决方案。