git merge “supprimer”
Je suis en train de faire une grosse fusion.
Beaucoup de fichiers ont été supprimés de la mise en pension dans ma branche, et en faire la fusion je veux garder ce changement pour l'ensemble de ces fichiers.
Il y a aussi quelques fichiers qui devront explicite de la fusion et j'ai l'intention d'utiliser git mergetool
pour les fusionner.
Je veux garder le "supprimer" le changement (ie. les fichiers doivent rester supprimé) pour tous les fichiers supprimés. D'autres conflits de fusion je veux résoudre moi-même.
Est il possible que je peux dire à git pour garder les fichiers supprimés supprimé?
git rm
pendant une opération de fusion est dans le processus devrait faire l'affaire.- Combien de fichiers sont supprimés en local, mais pas sur la télécommande?
- git rm donne à la sortie "(nom de fichier): besoins de fusion" pour chaque fichier.
- 1082 fichiers
- vous pouvez voir si
git checkout --ours <paths...>
œuvres. git checkout --ours <paths...>
donne la sortie "erreur: le chemin d'accès '(nom de fichier) "n'a pas notre version" pour chaque fichier.- Je soupçonne
git rm
fait ce que vous vouliez, et vous avez vraiment besoin d'engager le résultat. - Double Possible de Git merge stratégie pour ignorer les fichiers supprimés
Vous devez vous connecter pour publier un commentaire.
Ici est une solution partielle:
Résoudre tous les non supprimé les conflits de fusion en main, que vous avez à faire, de toute façon
Type
git diff --name-only --diff-filter=U
pour obtenir une liste de tous les fichiers restants dans le conflit. Ces fichiers doivent être ceux que vous voulez supprimer. Enregistrer la liste des fichiers supprimés commefilesToRemove.txt
Puis faire
cat filesToRemove.txt | xargs git rm
pour supprimer tous les fichiers.git diff --name-only --diff-filter=U | xargs git rm
Une ligne correctif:
yes d
engit rm
.Vous pouvez résoudre ce problème en gardant les fichiers édités par l'ajout de revenir et de s'engager une fois de plus:
ou
Puis valider
Si vous voulez résoudre le confict en supprimant les fichiers, vous devez exécuter
git rm
au lieu degit add
.Voir: La résolution d'un conflit de fusion à partir de la ligne de commande
Je vais laisser la question - parce que je suis sûr qu'il y est une bonne réponse - c'est ce que j'ai fait dans le temps de le dire:
git status
pour voir la liste des fichiers supprimés (1082) et le nombre qui ont des conflits de fusion (3)git add
sur euxgit mergetool < d.txt
Pas élégant, mais plus rapide qu'en appuyant sur la lettre "d" et entrez 1082 fois
J'ai aussi observé
lors de la tentative
après l'écrémage et de voir le fichier en "supprimer" de statut de.
J'ai résolu de supprimer en procédant comme suit:
cela ajoute abc.txt pour la zone de transit (essentiellement recréer le "supprimer" du fichier. (ce qui résout le conflit statut)
puis supprime les fichiers du système de fichiers
ajoute ensuite à l'énonciation de la zone du fait que le fichier est maintenant disparu.
il y a probablement shell astuces pour exécuter ces 3 commandes sur votre ensemble de+ de 1000 fichiers sans trop de maux de tête.
il y a probablement de meilleures façons de gérer cela, mais depuis
git rm abc.txt
ne fonctionne pas comme nous l'attendions pour notre situation(s), j'ai pensé que je voudrais partager une autre série de commandes qui semblent avoir fonctionné sans l'aide de la mergetool.