Je suis en train de faire une grande fusion . De nombreux fichiers ont été supprimés du référentiel dans ma branche, et lors de la fusion, je souhaite conserver cette modification pour tous ces fichiers. aura besoin d’une fusion explicite et j’ai l’intention d’utiliser git mergetool
pour les fusionner.
Je souhaite conserver le changement "supprimé par nous" (c'est-à-dire que les fichiers doivent rester supprimés) pour tous les fichiers supprimés. Autres conflits de fusion que je veux résoudre moi-même.
Est-il possible de dire à git de garder les fichiers supprimés supprimés?
Voici une solution partielle:
Résoudre tous les conflits de fusion non supprimés à la main, ce que vous devez faire quand même
Tapez git diff --name-only --diff-filter=U
pour obtenir une liste de tous les fichiers restants en conflit. Ces fichiers doivent être ceux que vous souhaitez supprimer. Enregistrez la liste des fichiers supprimés sous le nom filesToRemove.txt
Ensuite, faites cat filesToRemove.txt | xargs git rm
pour supprimer tous les fichiers.
Une ligne correctif:
git diff --name-only --diff-filter=U | xargs git rm
Vous pouvez résoudre ce problème en conservant les fichiers modifiés en les rajoutant et en les validant une nouvelle fois:
git add .
ou
git add -A
Puis commettre
git commit
Si vous voulez résoudre le conflit en supprimant les fichiers, vous devez exécuter git rm
au lieu de git add
.
Voir: Résolution d'un conflit de fusion à partir de la ligne de commande
Je vais laisser la question - car je suis sûr qu'il y a une bonne réponse - voici ce que j'ai fait entre-temps:
git status
pour voir la liste des fichiers supprimés (1082) et le nombre de conflits de fusion (3)git add
sur euxgit mergetool < d.txt
Pas élégant, mais plus rapide que d'appuyer sur la lettre "d" et entrez 1082 fois
J'ai aussi observé
abc.txt: doit fusionner
en essayant
git rm abc.txt
après la sélection et la visualisation du fichier en statut "supprimé par nous".
Je me suis retrouvé avec une suppression résolue en procédant comme suit:
git add abc.txt
rm abc.txt
git add abc.txt
cela ajoute abc.txt à la zone de stockage intermédiaire (en recréant essentiellement le fichier "supprimé par nous" (qui résout le statut du conflit).
supprime ensuite les fichiers du système de fichiers
ajoute ensuite à la zone de déclaration le fait que le fichier est maintenant parti.
il y a probablement des astuces de Shell pour exécuter ces 3 commandes sur votre ensemble de plus de 1000 fichiers sans trop de maux de tête.
il existe probablement de meilleurs moyens de gérer cela, mais comme git rm abc.txt
ne fonctionnait pas comme prévu, nous pensions partager un ensemble alternatif de commandes qui semblent avoir fonctionné sans utiliser mergetool.