La première chose que je veux clarifier est que les noms de branche ne sont qu'un alias d'un commit spécifique. un commit est ce que git fonctionne, lorsque vous tirez, poussez la fusion et ainsi de suite. Chaque commit a un identifiant unique.
Lorsque vous effectuez une fusion de $ git, ce qui se passe réellement est que git essaie d'avancer rapidement votre branche actuelle vers la validation sur laquelle la branche référencée est activée (en d'autres termes, les deux noms de branches pointent vers la même validation.) Ce scénario est le plus simple pour git. à traiter, car il n'y a pas de nouveau commit. Pensez au maître qui saute sur le lilipad sur lequel votre branche se refroidit. Il est possible de définir l'indicateur --no-ff, auquel cas git créera un nouveau commit, qu'il y ait ou non des conflits de code.
Dans une situation où il y a des conflits de code entre les deux branches que vous essayez de fusionner (généralement deux branches dont l'historique de validation partage une validation commune dans le passé), l'avance rapide ne fonctionnera pas. git peut toujours être capable de fusionner automatiquement les fichiers, tant que la même ligne n'a pas été modifiée par les deux branches dans un fichier en conflit. dans ce cas, git fusionnera les fichiers en conflit pour vous ET les validera automatiquement. Vous pouvez prévisualiser comment git a fait en faisant $ git diff --cached. Ou vous pouvez passer l'indicateur --no-commit à la commande merge, qui laissera les fichiers modifiés dans votre index que vous devrez ajouter et valider. Mais vous pouvez $ git diff ces fichiers pour voir ce que la fusion va changer.
Le troisième scénario est quand il y a des conflits que git ne peut pas résoudre automatiquement. Dans ce cas, vous devrez les fusionner manuellement. À mon avis, c'est plus facile à faire avec une fusion, comme la fusion araxis ou p4merge (gratuit). De toute façon, vous devez faire chaque fichier un par un. Si la fusion semble être bloquée, utilisez $ git merge --continue, pour la pousser. Git devrait vous dire si cela ne peut pas continuer, et si oui, pourquoi pas. Si vous sentez que vous avez raté la fusion à un moment donné, vous pouvez faire $ git merge --abort, et toute fusion sera annulée et vous pourrez recommencer. Lorsque vous avez terminé, chaque fichier que vous avez fusionné sera un fichier modifié qui doit être ajouté et validé. Vous pouvez vérifier où se trouvent les fichiers avec le statut $ git. Si vous n'avez pas encore validé les fichiers fusionnés. Vous devez le faire pour terminer la fusion.
git commit gf2n.cpp -m "Hand merge gf2n.cpp due to conflicts"
, il en résultefatal: cannot do a partial commit during a merge.
. Et bien sûr, les "validations partielles" ne semblent pas être documentées ou discutées nulle part dans les pages de manuel de git. Effectuer ungit merge
après le correctif se traduit parPlease, commit your changes before you can merge.
un outil de cul cassé ...