Git fusionne sans auto commit

Est-il possible de faire une git merge , mais sans commettre?

“man git merge” dit ceci:

 With --no-commit perform the merge but pretend the merge failed and do not autocommit, to give the user a chance to inspect and further tweak the merge result before committing. 

Mais quand j’essaie d’utiliser git merge avec le --no-commit il --no-commit toujours automatiquement. Voici ce que j’ai fait:

 $> ~/git/testrepo$ git checkout master Switched to branch 'master' $> ~/git/testrepo$ git branch * master v1.0 $> ~/git/testrepo$ git merge --no-commit v1.0 Updating c0c9fd2..18fa02c Fast-forward file1 | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) $> ~/git/testrepo$ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # nothing to commit (working directory clean) 

Un git log ultérieur révèle que tous les commits de la twig v1.0 ont été fusionnés dans master.

Notez le résultat lors de la fusion – il est dit Fast Forward

Dans de telles situations, vous voulez faire:

 git merge v1.0 --no-commit --no-ff 

Vous comprenez mal la signification de la fusion ici.

Le --no-commit empêche le MERGE COMMIT de se produire, et cela ne se produit que lorsque vous fusionnez deux historiques de twig divergents; Dans votre exemple, ce n’est pas le cas puisque Git indique qu’il s’agissait d’une fusion “fast-forward” et que Git n’applique que les commits déjà présents sur la twig de manière séquentielle.

Si vous voulez seulement commettre toutes les modifications dans une validation comme si vous vous étiez tapé, –squash fera de même

 $ git merge --squash v1.0 $ git commit 

Je préfère de cette façon, donc je n’ai pas besoin de retenir de parameters rares.

 git merge branch_name 

On dira alors que votre twig est en avance par # commits, vous pouvez maintenant désactiver ces commits et les mettre dans les modifications de travail avec les éléments suivants:

 git reset @~# 

Par exemple, si après la fusion il y a 1 commit, utilisez:

 git reset @~1