Подтвердить что ты не робот

Как сделать "git checkout - theirs" для нескольких файлов (или всех несвязанных файлов)

Скажем, у меня это после попытки слияния и при входе 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

... но их много. Как я могу сделать их как пакет?

4b9b3361

Ответ 1

Решением для моего дела оказалось просто использовать подстановочный знак в пути к каталогу, поскольку файлы были сгруппированы:

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

Ответ 2

Если ваши файлы глубже одного каталога (т.е. есть подкаталоги), и вы хотите выборочно рекурсивно выбирать все their файлы для каталога, используйте следующее:

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

(из эта страница)

Ответ 3

Это проверяет все несвязанные файлы без указания каталога:

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

Источник

Ответ 4

Вы можете использовать приведенные ниже команды для проверки кратных файлов на несвязанном пути

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

выполните приведенную ниже команду для фиксации вышеуказанных файлов

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