Un remplacement pour git merge
cela écrasera les fichiers non suivis
Les commentaires ci-dessous utilisent «FOI» pour les «fichiers d'intérêt», les fichiers
- existent dans la branche des donateurs,
- n'existent pas dans la branche destinataire,
- et bloquent la fusion car ils sont présents et non suivis dans votre répertoire de travail.
git checkout -f donor-branch # replace FOI with tracked `donor` versions
git checkout receiving-branch # FOI are not in `receiving`, so they disapppear
git merge donor-branch # now the merge works
Un remplacement pour git pull
cela écrasera les fichiers non suivis
pull = fetch + merge
, nous git fetch
suivons donc l' git checkout -f, git checkout, git merge
astuce ci-dessus.
git fetch origin # fetch remote commits
git checkout -f origin/mybranch # replace FOI with tracked upstream versions
git checkout mybranch # FOI are not in mybranch, so they disapppear
git merge origin/mybranch # Now the merge works. fetch + merge completes the pull.
Explication détaillée
git merge -f
n'existe pas, mais existe git checkout -f
.
Nous utiliserons git checkout -f
+git checkout
pour supprimer les fichiers d'intérêt (voir ci-dessus), puis votre fusion pourra se dérouler normalement.
Étape 1. Cette étape remplace de force FOI non suivi par des versions suivies de la branche donneur (il vérifie également la branche donneur et met à jour le reste du répertoire de travail).
git checkout -f donor-branch
Étape 2. Cette étape supprime le FOI car ils sont suivis dans notre branche actuelle (donneur) et absents dans le receiving-branch
commutateur vers lequel nous basculons.
git checkout receiving-branch
Étape 3. Maintenant que la FOI est absente, la fusion dans la branche des donateurs n'écrasera aucun fichier non suivi, nous n'obtiendrons donc aucune erreur.
git merge donor-branch