[英]How can I get my git merge conflicts into a diff-like format?
我正在合并两个涉及文件foo
git 变更集(或者也许 - 在git rebase
'ing 的过程中,它合并了变更集),并且有一些合并冲突。 该文件如下所示:
text appearing in all changesets
<<<<<<< HEAD
text added on the head
=======
something else added on another changeset
>>>>>>> 1babf8ed... commit comment here
more text appearing in all changesets
added text, no conflicts
yet more appearing in all changesets
我的问题:
对于特定文件(如上面的foo
),如何显示冲突内容,以便 HEAD 修订版显示为已删除的文本,而另一个变更集(在我的示例中)显示为添加的文本? 换句话说,我怎么能做出一些工具对待之间的部分<<<<<
和=====
作为其前缀-
之间的部分和>>>>>
和=====
由作为前缀+
,或另一种方式?
笔记:
冲突不是差异,因为它不是一方的补充,另一方面是删除。
话虽这么说,像meld,kdiff3或p4merge这样的工具能够在“并排”视图中显示冲突,以帮助您修复它们。
编辑:
例如:
鉴于通过此脚本创建的情况:
#!/usr/bin/env bash
git init demoRepo
cd demoRepo
git commit --allow-empty -m "Init"
for i in {1..10}; do
echo $i >> myFile.txt
git commit -m "Add ${i} to my file" -- myFile.txt
done
git checkout -b branch2 HEAD~5
for i in A B C D E; do
echo $i >> myFile.txt
git commit -m "Add ${i} to my file" -- myFile.txt
done
git merge master
我们在myFile.txt
有冲突。
将meld
设置为您的mergetool
:
git config --global merge.tool meld
# Use `--local` if you want this setting to be only in current repository
然后用:
git mergetool
# You may also call it without (pre)defining the tool in config, like:
# git mergetool --tool=meld
Meld应该知道显示你与“并排”视图冲突。
为此,您可以简单地使用git diff
。 你需要通过它:
-U999999
显示整个文件(通过告诉它你想要围绕任何差异的多行上下文) 示例: git diff a829c71 d98ef2a -U999999 example.py
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.