获取冲突文件列表的最简单方法是什么?
我只需要一个普通的冲突文件列表。
有什么比以下更简单的:
git ls-files -u | cut -f 2 | sort -u
要么
git ls-files -u | awk '{print $4}' | sort | uniq
?
我想我可以设置一个方便的别名,但是想知道专业人士如何做。 我会用它来编写shell循环,例如自动解决冲突等。也许通过插入mergetool.cmdreplace该循环?
git diff --name-only --diff-filter=U
试图回答我的问题:
不,似乎没有什么比问题中的方法更简单的方法。
在input太多次之后,只需将较短的一个粘贴到名为“git-conflicts”的可执行文件中,使其可以被git访问,现在我只需要: git conflicts
来获取我想要的列表。
更新:正如理查德所说,你可以设置一个git别名,作为可执行文件的替代品
git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'
通过别名使用可执行文件的一个好处是,您可以与团队成员共享该脚本(在仓库的仓库目录中)。
git status --short | grep "^UU "
这是一个傻瓜式的方法:
grep -H -r "<<<<<<< HEAD" /path/to/project/dir
git status
会在有冲突的文件旁边显示“both modified”,而不是“modified”或“new file”等
你可能会在你的命令行上打git ls-files -u
它列出冲突的文件
这适用于我:
git grep '<<<<<<< HEAD'
要么
git grep '<<<<<<< HEAD' | less -N
如果你尝试提交,如果有冲突,那么git会给你列出当前未解决的冲突…但不是一个普通的列表。 这通常是交互式工作时所需要的,因为在解决冲突时,列表变短。
也许这已经添加到Git中,但是尚未parsing的文件在状态消息(git status)中列出,如下所示:
# # Unmerged paths: # (use "git add/rm <file>..." as appropriate to mark resolution) # # both modified: syssw/target/libs/makefile #
请注意,这是“未合并path”部分。
我一直只使用git status
。
可以在最后添加awk
来获取文件名
git status -s | grep ^U | awk '{print $2}'
查尔斯·贝利(Charles Bailey)答案的细微变化给出了更多信息:
git diff --name-only --diff-filter=U | xargs git status