2010-11-18 5 views
14

Habitué à SVN, je fais toujours une 'mise à jour' avant de partager les modifications, donc avant de faire des poussées, je tire toujours en premier.Empêcher git d'écrire des commandes de fusion vides

Il est ennuyeux quand je tire (même si il n'y avait pas de changements à la télécommande) et voir un commit pour une fusion avec 0 changed files with 0 additions and 0 deletions. Commets comme:
https://github.com/UCF/Harvard-Mobile-Web/commit/be9d6b2d1ab196554e080d8b8647a9d16c8a5ddf

Je trouve que c'est un bruit inutile lorsque l'on regarde l'historique de validation.

Peut-être qu'il y a quelque chose qui me manque, y a-t-il un quelconque intérêt à ce commit? Sinon, est-il possible d'empêcher git d'écrire des commits de fusion vides?

+0

Vous semblez avoir fusionné deux commits qui sont eux-mêmes se confond les deux mêmes commits. Comme aucun de ceux-ci n'est un descendant direct de l'autre git * has * pour faire un commit quand vous lui demandez de fusionner. Ce que je ne comprends pas, c'est pourquoi vous vouliez faire la même fusion deux fois et ensuite fusionner le résultat. Qu'est ce que tu essayais de faire? –

+3

1) Tiré de l'amont [changements fusionnés] 2) temps passé, tiré de l'amont à nouveau [fusionné plus de changements] 3) prêt à pousser à ma fourche, tiré en premier (s'assurer qu'il n'y a pas de changements sur la fourche de collègues) commit de fusion vide encore écrit. 'git pull --rebase' était exactement ce que je cherchais. – Doug

Répondre

20

La définition même de git pull est essentiellement "aller chercher et fusionner avec le nouveau HEAD distant pour ma branche actuelle." Si vous voulez rebaser à la place, il suffit de git pull --rebase. Ceci modifie pull pour rebaser vos commits sur le nouveau HEAD distant.

Personnellement, j'aime git fetch (télécharger de nouveaux objets à partir de la télécommande, mais ne mettre à jour aucune branche locale) et inspecter la situation, puis décider moi-même de fusionner ou de rebaser.

+1

Merci. Aussi utile, votre commentaire m'amène à: [Quand devrais-je utiliser git pull --rebase?] (Http://stackoverflow.com/questions/2472254/when-should-i-use-git-pull-rebase) – Doug

5

Il existe plusieurs options, qui se résument toutes au même: faire git utiliser l'option --rebase (comme mentionné par @cdhowie).

Vous constaterez probablement que vous préférez un de ceux:

Option 1: utiliser Explicitement git pull --rebase chaque fois.

Option 2: pour chaque projet, modifiez le fichier .git/config en ajoutant

[branch "master"] 
remote = origin 
merge = refs/heads/master 
rebase = true 

Option 3: dans votre vie personnelle ~/.gitconfig

[branch] 
    autosetuprebase = always 

Personnellement, j'aime l'option 3, car elle me permet de ne pas appliquer quoi que ce soit sur d'autres développeurs, tout en n'ayant pas à taper --rebase à chaque fois.

Voir aussi How to make Git pull use rebase by default for all my repositories?

Questions connexes