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?
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/*
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 )
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}'`
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 --