Existe-t-il un moyen de simuler un git merge
entre deux branches, la branche en cours de travail et le maître, mais sans apporter de modification?
J'ai souvent des conflits quand je dois créer un git merge
. Existe-t-il un moyen de simuler la fusion en premier?
Je ne pense pas qu'il y ait un moyen de simuler ce qui se passera jusqu'à ce que vous essayiez la fusion. Cependant, si vous vous assurez que la sortie de git status
est vide avant de procéder à la fusion, il est tout à fait sûr de continuer et de l'essayer. Si vous avez des conflits, vous pouvez immédiatement revenir à l'état dans lequel vous vous trouviez auparavant avec:
git reset --merge
Depuis git 1.7.4, vous pouvez également annuler la fusion en faisant:
git merge --abort
(Comme le message de validation qui ajoute cette option explique , cela a été ajouté pour des raisons de cohérence avec git rebase --abort
et ainsi de suite.)
Vous pouvez utiliser git merge --no-commit
pour empêcher la fusion d'être réellement validée. Si vous n'aimez pas le résultat de la fusion, réinitialisez simplement la tête d'origine.
Si vous ne voulez absolument pas finaliser la fusion, même si c'est une avance rapide (et donc sans conflit, par définition), vous pouvez aussi ajouter --no-ff
.
Si je veux comparer les modifications apportées à une branche de sujet à maîtriser, je trouve qu'il est plus simple et plus sûr de procéder comme suit:
git checkout master
git checkout -b trial_merge
git merge topic_branch
Une fois la fusion terminée, il est facile de voir le changement consolidé depuis le modèle principal.
git diff master
Une fois terminé, supprimez simplement la branche trial_merge
git checkout master
git branch -D trial_merge
De cette façon, la branche principale ne change jamais.
J'utilise :
git merge --ff-only
selon documentation :
Refusez de fusionner et quittez avec un statut différent de zéro sauf si le HEAD actuel est déjà à jour ou si la fusion peut être résolue en avance rapide.
Ce n'est pas vraiment une simulation car il y aura une fusion rapide en cas d'absence de conflit entre les deux branches. Mais en cas de conflit, vous en serez informé et rien ne se passera.
J'ai pu utiliser git merge --abort
, récemment. Cependant, cela ne peut être utilisé qu'en cas de conflit de fusion. Si vous êtes sûr de ne pas vouloir vous engager, utilisez les autres méthodes mentionnées ci-dessus.
Pourquoi ne pas simplement créer une branche jetable (git checkout -b) et faire un test de fusion là-bas?
Je ne sais pas exactement si c'est votre cas, mais votre question me rappelle que parfois, je commence une fonction, je m'engage au fil des jours et je la fusionne plusieurs fois.
Sur ce point, je perds le contrôle sur les fichiers que j'ai modifiés et je ne le saurai que lorsque ma fonctionnalité sera fermée et que mon code va se développer.
Dans ce cas, l'utilisation de Sourcetree est un bon moyen de savoir quelles modifications vous avez apportées (aucune autre des fusions).
Vous devez cliquer avec le bouton droit sur la branche de base et sélectionner Diff Against Current
:
Ensuite, sourcetree vous montrera toutes les modifications qui seront fusionnées si vous fusionnez votre branche en branche de base.
Bien sûr, cela ne vous montrera pas les conflits, mais c’est un outil utile dans les fusions.