906 votes

Existe-t-il une option git-merge --dry-run?

Je fusionne dans une branche distante qui peut avoir beaucoup de conflits. Comment puis-je savoir s'il y aura des conflits ou non?

Je ne vois rien comme --dry-run sur git-merge .

1016voto

mipadi Points 135410

Comme indiqué précédemment, transmettez l'indicateur --no-commit , mais pour éviter une validation rapide, transmettez également --no-ff , comme suit:

 $ git merge --no-commit --no-ff $BRANCH
 

Cela vous permettra d'examiner / annuler la fusion, même s'il s'agit d'une fusion rapide.

283voto

akostajti Points 731

J'ai juste eu à mettre en œuvre une méthode qui trouve automatiquement les conflits entre un référentiel et de sa distance. Cette solution ne de la fusion en mémoire afin de ne pas toucher à l'index, ni l'arbre de travail. Je pense que c'est la plus sûre façon possible, vous pouvez résoudre ce problème. Voici comment il fonctionne:

  1. Chercher la télécommande de votre référentiel. Par exemple: git fetch origin master
  2. Exécutez git merge-base: git merge-base FETCH_HEAD master
  3. Exécutez git merge-arbre: git merge-tree mergebase master FETCH_HEAD (mergebase est l'id hexadécimal que l'opération de fusion-base imprimée à l'étape précédente)

Je suppose que vous souhaitez fusionner le maître auprès de votre maître, mais vous pouvez utiliser toutes les branches. git merge-tree d'exécuter la fusion en mémoire et affiche le résultat sur la sortie standard. Grep pour le modèle de la << ou >>. Ou vous pouvez imprimer la sortie vers un fichier et de le vérifier. Si vous trouvez une ligne commençant par "a changé dans les deux', puis très probablement, il y aura un conflit.

61voto

hades Points 161

Ma solution brutale à cette solution est,

  1. créer une branche pré-master (à partir du master bien sûr)
  2. fusionner toutes les choses que vous voulez faire à ce pré-maître

alors vous pouvez voir comment la fusion s'est produite sans toucher le maître alors.

3a. Fusionner le pré-master en master ou 3b. fusionner toutes les branches libérées par wannabe en master

:)

anywa je suivrais orange80 conseiller.

48voto

Brian Phillips Points 7023

Annuler une fusion avec git est si facile que vous ne devriez même pas vous inquiéter de la marche à sec:

 $ git pull $REMOTE $BRANCH
# uh oh, that wasn't right
$ git reset --hard ORIG_HEAD
# all is right with the world
 

29voto

timh Points 481

Juste diff votre branche actuelle contre la branche distante, cela vous dira ce qui va changer lorsque vous faites un pull / fusion.

 #see diff between current master and remote branch
git diff master origin/master
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X