web-dev-qa-db-fra.com

Marqueurs de conflit Git

Après avoir tiré d'une branche distante, j'ai eu un conflit. Lorsque j'ouvre le fichier, il ressemble à quelque chose comme ci-dessous:

<<<<<<< HEAD:file.txt
Hello world
=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt

J'ai besoin de quelques explications sur les marqueurs, quelle partie du code est extraite de la télécommande et quelle est celle du local?

Que signifie le code 77976da35a11db4580b80ae27e8d65caf5208086?

347
Mellon

La ligne (ou les lignes) entre les lignes commençant par <<<<<<< et ====== ici:

<<<<<<< HEAD:file.txt
Hello world
=======

... est ce que vous aviez déjà localement - vous pouvez le dire, car HEAD pointe vers votre branche actuelle ou commit. La ligne (ou les lignes) entre les lignes commençant par ======= et >>>>>>>:

=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt

... est ce qui a été introduit par l'autre commit (tiré), dans ce cas 77976da35a11. C'est le nom de l'objet (ou "hash", "SHA1sum", etc.) du commit qui a été fusionné dans HEAD. Tous les objets de git, qu'ils soient commits (version), blobs (fichiers), arborescences (répertoires) ou balises, ont un nom d'objet de ce type, qui les identifie de manière unique en fonction de leur contenu.

570
Mark Longair