web-dev-qa-db-fra.com

Comment faire 'git checkout - theirs' pour plusieurs fichiers (ou tous les fichiers non fusionnés)

Dites-le après avoir tenté une fusion et après avoir entré 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

... et je sais que je veux le faire pour chacun de ces fichiers:

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

... mais ils sont nombreux. Comment pourrais-je les faire en lot?

21
isherwood

La solution pour mon cas a consisté simplement à utiliser un caractère générique dans le chemin du répertoire, puisque les fichiers étaient regroupés:

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

Si vos fichiers sont plus profonds qu'un répertoire (c'est-à-dire qu'il existe des sous-répertoires) et que vous souhaitez sélectionner de manière sélective et récursive tous les fichiers their d'un répertoire, utilisez ce qui suit:

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

(de cette page )

2
kris

Vous pouvez utiliser les commandes ci-dessous pour extraire plusieurs fichiers sur un chemin non fusionné.

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

exécuter la commande ci-dessous pour valider les fichiers ci-dessus

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

Ceci extrait tous les fichiers non fusionnés sans spécifier le répertoire:

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

La source

0
fracz