我只需要一份冲突文件列表。
还有什么比:
git ls-files -u | cut -f 2 | sort -u
or:
git ls-files -u | awk '{print $4}' | sort | uniq
我想我可以为此设置一个方便的别名,但我想知道专业人士是如何做到的。我会用它来写shell循环,比如自动解决冲突等等。也许可以通过插入mergetool.cmd来替换这个循环?
我只需要一份冲突文件列表。
还有什么比:
git ls-files -u | cut -f 2 | sort -u
or:
git ls-files -u | awk '{print $4}' | sort | uniq
我想我可以为此设置一个方便的别名,但我想知道专业人士是如何做到的。我会用它来写shell循环,比如自动解决冲突等等。也许可以通过插入mergetool.cmd来替换这个循环?
当前回答
如果您尝试提交,并且存在冲突,那么git将为您提供当前未解决的冲突列表……但不是普通的列表。这通常是您在交互工作时想要的,因为当您解决冲突时,列表会变得更短。
其他回答
假设你知道git根目录${GIT_ROOT}在哪里,你可以这样做,
cat ${GIT_ROOT}/.git/MERGE_MSG | sed '1,/Conflicts/d'
使用git diff,带name-only只显示名称,diff-filter=U只包括'Unmerged'文件(可选地,相对于当前工作目录显示路径)。
git diff --name-only --diff-filter=U --relative
我一直只使用git状态。
可以在最后添加awk来获得文件名吗
git status -s | grep ^U | awk '{print $2}'
我在这里的2美分(即使有很多很酷/有用的回应)
我在.gitconfig中创建了这个别名
[alias]
...
conflicts = !git diff --name-only --diff-filter=U | grep -oE '[^/ ]+$'
它只会显示有冲突的文件的名称。不是他们的全部路线:)
如果你在本地git存储库中工作,或者在patch -p1——merge <…是应用。
grep -rnw . -e '^<<<<<<<$'