Existe-t-il un moyen de simuler un git merge
entre deux branches, la branche de travail actuelle et le maître, mais sans apporter de modifications?
J'ai souvent des conflits quand je dois faire un git merge
. Existe-t-il un moyen de simuler d'abord la fusion?
Réponses:
Je ne pense pas qu'il existe 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 rencontrez des conflits, vous pouvez immédiatement revenir à l'état dans lequel vous étiez auparavant avec:Depuis git 1.7.4, vous pouvez également abandonner la fusion en faisant:
(Comme l' explique le message de validation qui a ajouté cette option , cela a été ajouté par souci de cohérence avec
git rebase --abort
et ainsi de suite.)la source
--no-commit
est beaucoup plus facile à mon avis--no-commit
vous changez toujours l'index et l'arbre de travail, ce qui n'est pas exactement "sans faire de changements" :) Mon point est que lorsque les gens demandent ce genre de question, c'est généralement parce qu'ils ne sont pas conscients que la meilleure façon de voir comment une fusion se déroulerait est simplement d' essayer la fusion , souvent parce qu'ils ne savent pas à quel point il est facile de revenir à l'état dans lequel ils se trouvaient auparavant. s'il s'est avéré qu'il y avait des problèmes.git merge --abort
équivaut àgit reset --merge
quandMERGE_HEAD
est présent", donc ce qui est plus facile à retenir :)Vous pouvez utiliser
git merge --no-commit
pour empêcher la fusion d'être réellement validée, et si vous n'aimez pas le fonctionnement de la fusion, réinitialisez simplement la tête d'origine.Si vous ne voulez certainement pas finaliser la fusion, même s'il s'agit d'une avance rapide (et n'a donc aucun conflit, par définition), vous pouvez également en ajouter
--no-ff
.la source
git merge --abort
existe - peut-être voulez-vous diregit reset --merge
?rebase
il n'y a pas de--abort
pourgit merge
.--no-ff
trop. Pour empêcher une fusion ff.--no-ff
est à peu près obligatoire ici, car cela--no-commit
n'arrête pas les changements rapides.Si je veux comparer les changements sur une branche de sujet à master, je trouve qu'il est plus simple et plus sûr de faire ce qui suit:
Une fois la fusion terminée, il est facile de voir le changement consolidé du maître
Une fois terminé, supprimez simplement la branche trial_merge
De cette façon, la branche principale ne change jamais.
la source
git checkout --detach
et tester tout ce que vous voulez. Plus tard, si vous souhaitez conserver vos modifications, faites-legit checkout -b new_branch
. Et si vous souhaitez annuler vos modifications, extrayez la branche de votre choix (git checkout master
).topic_branch
est énorme (comme c'est probablement le cas si vous êtes à cette question en premier lieu), ladiff master
sortie est probablement trop grande pour que vous puissiez regarder si une fusion va provoquer des conflits.J'utilise :
selon documentation :
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 serez informé et rien ne se passera.
la source
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.la source
git merge --abort
. Vous devriez prouver votre réponse à l'avenir en précisant qui a rédigé la réponse à laquelle vous faites référence.Pourquoi ne pas simplement créer une branche jetable (git checkout -b), et y faire un test de fusion?
la source
Je ne sais pas exactement si c'est votre cas , mais votre question me rappelle que parfois je lance une fonctionnalité, je m'engage au fil des jours et je fusionne le développement dessus plusieurs fois.
Sur ce point, je perds le contrôle sur les fichiers exacts que j'ai modifiés et je ne le saurai que lorsque ma fonctionnalité sera fermée et que mon code sera développé.
Dans ce cas, un bon moyen de savoir quelles modifications vous avez apportées (pas d'autres des fusions) utilise Sourcetree.
Vous devez cliquer avec le bouton droit sur la branche de base et sélectionner
Diff Against Current
:Puis sourcetree vous montrera toutes les modifications qui seront fusionnées si vous fusionnez votre branche dans la branche de base.
Bien sûr, il ne vous montrera pas les conflits, mais c'est un outil utile dans les fusions.
la source