git - 以编程方式显示合并期间使用的所有 git rerere 分辨率
问题描述
在启用 rerere 的情况下进行合并时,所有冲突都通过 rerere 解决,它只打印如下内容:
Resolved 'a.c' using previous resolution.
Resolved 'b.c' using previous resolution.
Resolved 'c.c' using previous resolution.
我想查看之前的差异(带有冲突标记)和解析后的差异。我知道我可以做到:
git checkout -m a.c
git diff
git rerere
git diff
git checkout -m b.c
git diff
git rerere
git diff
...
有点看它为每个分辨率使用的前/后图像。但是是否有某种方法可以检索该信息或使用的 rerere 指纹,而无需手动解析git merge hash
每条Resolved X using previous resolution.
消息的输出。
解决方案
感觉就像您正在寻找比较我们的、他们的和分辨率的。从这里看来,git diff
将拒绝比较 3 个文件。我已经修改了该帖子中的示例以提供此示例;
git diff --name-only master feature |\
xargs -I % bash -c "diff3 <( git show master:% ) <( cat % ) <( git show feature:% )"
diff3 的输出更复杂,但你正在做的事情很复杂。
复制步骤
初始化回购。
Horba@cake ~ $ git init MergeDiff/
Initialized empty Git repository in /home/Horba/MergeDiff/.git/
Horba@cake ~ $ cd MergeDiff/
Horba@cake ~/MergeDiff $ vim README.md
Horba@cake ~/MergeDiff $ git add README.md
Horba@cake ~/MergeDiff $ git commit -m "Init."
[master (root-commit) 5250b3f] Init.
1 file changed, 3 insertions(+)
create mode 100644 README.md
Horba@cake ~/MergeDiff $ git branch feature
Horba@cake ~/MergeDiff $ git config rerere.enabled true
Horba@cake ~/MergeDiff $ git config rerere.autoupdate true
Horba@cake ~/MergeDiff $ vim README.md
Horba@cake ~/MergeDiff $ git add README.md
Horba@cake ~/MergeDiff $ git commit -m "Work on master."
[master 8c12c43] Work on master.
1 file changed, 1 insertion(+), 1 deletion(-)
Horba@cake ~/MergeDiff $ git checkout feature
Switched to branch 'feature'
Horba@cake ~/MergeDiff $ vim README.md
Horba@cake ~/MergeDiff $ git commit -m "Work on feature."
[feature 4b8ad3d] Work on feature.
1 file changed, 1 insertion(+), 1 deletion(-)
Horba@cake ~/MergeDiff $ git checkout master
Switched to branch 'master'
进行初始合并。
Horba@cake ~/MergeDiff $ git merge feature
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Recorded preimage for 'README.md'
Automatic merge failed; fix conflicts and then commit the result.
Horba@cake ~/MergeDiff $ cat README.md
# MergeDiff
<<<<<<< HEAD
Init - master changes
=======
Init - Work on feature
>>>>>>> feature
存储分辨率。
Horba@cake ~/MergeDiff $ vim README.md
Horba@cake ~/MergeDiff $ git rerere
Recorded resolution for 'README.md'.
Horba@cake ~/MergeDiff $ cat README.md
# MergeDiff
Init - Resolved
Horba@cake ~/MergeDiff $ git merge --abort
使用 rerere.autoupdate 再次合并。
Horba@cake ~/MergeDiff $ git merge feature
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Staged 'README.md' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.
Horba@cake ~/MergeDiff $ cat README.md
# MergeDiff
Init - Resolved
Horba@cake ~/MergeDiff $ git status
On branch master
All conflicts fixed but you are still merging.
(use "git commit" to conclude merge)
Changes to be committed:
modified: README.md
传统的差异没有帮助。
Horba@cake ~/MergeDiff $ git diff feature master HEAD
diff --cc README.md
index ca2c305,ca2c305..24b898d
--- a/README.md
+++ b/README.md
@@@ -1,3 -1,3 +1,3 @@@
# MergeDiff
--Init - master changes
++Init - Work on feature
diff3
可以做到。
Horba@cake ~/MergeDiff $ diff3 <(git show master:README.md) <(git show feature:README.md) <( cat README.md )
====1
1:1,3c
# MergeDiff
Init - master changes
2:0a
3:0a
====2
1:6c
3:3c
Init - Resolved
2:3c
Init - Work on feature
推荐阅读
- tensorflow - 如何在本地 rtx gpu 的 tpu 上训练 keras 模型
- php - 不识别变量也不识别 else 语句
- database - 如果用户在单个查询中喜欢提要,则获取信息(Firestore)
- python - Polyglot ubuntu 无法下载语言文件
- javascript - React 表单刷新整个页面 onSubmit 和 setState 不起作用
- c# - RequestLocalizationOptions 不返回 ASP.NET Core 支持的区域性
- c++ - 如何替换boost Spirit x3中的左递归?
- java - Cassandra 数据类型点燃数据类型
- vhdl - 电路无法增加
- shell - Make:使用 cat 将文件与换行符合并