web-dev-qa-db-fra.com

Dans TortoiseGit, lequel est MERGE_HEAD et lequel est HEAD?

C'est une question facile, mais git est vraiment déroutant avec ses étiquettes, et je n'ai pas pu trouver de réponse.

Lorsque j'ai des modifications locales et que je veux fusionner le dernier référentiel distant dans mon référentiel local, je fais un commit local puis git pull.

Lorsque les conflits de fusion apparaissent, j'ai la possibilité de résoudre les conflits à l'aide de MERGE_HEAD et de résoudre les conflits à l'aide de HEAD

Lequel est le référentiel distant et lequel est le référentiel local?

Je vous remercie

11
Mi Po

Ils sont les deux locaux (c'est important, mais pas très utiles :-)).

HEAD est votre branche actuelle, ce qui signifie celui que vous avez vérifié maintenant. Pour git merge c'est celui que vous aviez vérifié lorsque vous avez commencé.

MERGE_HEAD est le autre commit, ce qui signifie l'ID de hachage du commit que vous avez dit à Git de fusionner. C'est, git merge Origin/master résout Origin/master à un ID de hachage de validation local, puis fusionne ce commit et MERGE_HEAD contient l'ID de hachage de cette validation.

Je pense qu'un meilleur terme pour l'autre commit est autre ou --theirs, et Git utilise parfois ces termes, mais d'autres bits de Git utilisent le terme distant pour faire référence à --theirs commit.

9
torek

Je suis tombé sur ce fil en cherchant le même problème. J'utilise WinMerge comme outil de fusion pour TortoiseGit, et lors de la résolution d'un conflit, il affiche 3 volets: MERGE_HEAD à gauche, Base au milieu et HEAD à droite.

Il s'avère que le MERGE_HEAD est la validation/branche que vous essayez de fusionner, HEAD est la validation/branche que vous essayez de fusionner, et Base est le résultat de la fusion que vous devez modifier pour résoudre le conflit.

Par conséquent, vous devez modifier le code dans le volet central, Base, l'enregistrer et valider.

0
A. Genedy