マージを試行し、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
...しかし、それらの多くがあります。バッチとしてどのように行うことができますか?
私の場合の解決策は、ファイルがグループ化されているため、ディレクトリパスでワイルドカードを使用することでした:
git checkout --theirs directory_name/*
git add directory_name/*
以下のコマンドを使用して、マージされていないパス上の複数のファイルをチェックアウトできます
git checkout --theirs `git status | grep "added by them:" | awk '{print $NF}'`
以下のコマンドを実行して、上記のファイルをコミットします
git commit `git status | grep "added by them:" | awk '{print $NF}'`
ファイルが1つのディレクトリよりも深い(つまり、サブディレクトリがある)場合、ディレクトリのすべてのtheir
ファイルを選択的に再帰的に選択するには、次を使用します。
grep -lr '<<<<<<<' directory_name/ | xargs git checkout --theirs
git add directory_name/*
(from このページ )
これにより、ディレクトリを指定せずにすべてのマージされていないファイルがチェックアウトされます。
git ls-files --unmerged | Perl -n -e'/\t(.*)/ && print "$1\n"' | uniq | xargs -r git checkout --theirs --