如何为多个文件(或所有未合并的文件)执行'git checkout --theirs'

时间:2014-07-23 16:38:37

标签: git git-checkout git-add

说我尝试合并后输入git status

# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   added by them: myfile1.xhtml
#   added by them: myfile2.xhtml
#   added by them: myfile3.xhtml

...我知道我想为每个文件执行此操作:

git checkout --theirs myfile1.xhtml
git add myfile1.xhtml

......但其中有很多。我怎么能批量生产呢?

4 个答案:

答案 0 :(得分:25)

我的案例的解决方案最终只是在目录路径中使用通配符,因为文件已分组:

git checkout --theirs directory_name/*
git add directory_name/*

答案 1 :(得分:2)

如果您的文件比一个目录更深(即有子目录),并且您希望有选择地递归选择目录的所有their文件,请使用以下命令:

grep -lr '<<<<<<<' directory_name/ | xargs git checkout --theirs
git add directory_name/*

(来自this page

答案 2 :(得分:2)

您可以使用以下命令检查未合并路径上的多个文件

git checkout --theirs `git status | grep "added by them:" | awk '{print $NF}'`

执行以下命令提交上述文件

git commit `git status | grep "added by them:" | awk '{print $NF}'`

答案 3 :(得分:0)

这将检出所有未合并的文件,而不指定目录:

git ls-files --unmerged | perl -n -e'/\t(.*)/ && print "$1\n"' | uniq | xargs -r git checkout --theirs --

Source