ing*_*ger 641 git git-merge git-merge-conflict
我只需要一个冲突文件的简单列表.
有什么比这简单:
git ls-files -u | cut -f 2 | sort -u
Run Code Online (Sandbox Code Playgroud)
要么
git ls-files -u | awk '{print $4}' | sort | uniq
Run Code Online (Sandbox Code Playgroud)
?
我想我可以为此设置一个方便的别名,但是想知道专业人士是如何做到的.我用它来编写shell循环,例如自动解决冲突等.也许通过插入mergetool.cmd替换该循环?
CB *_*ley 1123
git diff --name-only --diff-filter=U
Run Code Online (Sandbox Code Playgroud)
cnl*_*evy 39
git diff --check
将显示包含冲突标记的文件列表,包括行号.
例如:
> git diff --check
index-localhost.html:85: leftover conflict marker
index-localhost.html:87: leftover conflict marker
index-localhost.html:89: leftover conflict marker
index.html:85: leftover conflict marker
index.html:87: leftover conflict marker
index.html:89: leftover conflict marker
Run Code Online (Sandbox Code Playgroud)
来源:https://ardalis.com/detect-git-conflict-markers
ing*_*ger 36
试着回答我的问题:
不,似乎没有任何比问题更简单的方法,开箱即用.
在输入太多次之后,只需将较短的一个粘贴到名为'git-conflicts'的可执行文件中,git可以访问,现在我可以:
git conflicts
获取我想要的列表.
更新:正如Richard建议的那样,您可以设置一个git别名,作为可执行文件的替代
git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'
Run Code Online (Sandbox Code Playgroud)
在别名上使用可执行文件的一个优点是,您可以与团队成员共享该脚本(在repo的bin目录部分中).
Raf*_*afa 21
git status
在具有冲突的文件旁边显示"已修改",而不是"已修改"或"新文件"等
小智 21
这是一个万无一失的方式:
grep -H -r "<<<<<<< HEAD" /path/to/project/dir
Run Code Online (Sandbox Code Playgroud)
mda*_*mda 17
git status --short | grep "^UU "
Run Code Online (Sandbox Code Playgroud)
Eri*_*ang 12
这对我有用:
git grep '<<<<<<< HEAD'
要么
git grep '<<<<<<< HEAD' | less -N
如果您正在本地 git 存储库或应用的目录中工作,我还建议您使用以下命令patch -p1 --merge < ...
。
grep -rnw . -e '^<<<<<<<$'
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您尝试提交,并且存在冲突,那么 git 将为您提供当前未解决冲突的列表……但不是一个简单的列表。这通常是交互式工作时您想要的,因为当您修复冲突时,列表会变短。