Je ne peux pas vraiment penser jamais d'un moment où j'utiliser git merge
plutôt que git rebase
et ne veulent avoir un commettras apparaissent. Existe-t-il un moyen de configurer git pour désactiver le transfert rapide par défaut? Le fait qu'il existe une --ff
option semble impliquer qu'il existe un moyen, mais je n'arrive pas à le trouver dans la documentation.
263
merge
tout le temps pour les succursales qui n'ont effectué aucune validation de leur télécommande afin de les faire avancer rapidement. Cela semble être le moyen le plus simple et le plus sûr de le faire. Je suis curieux, vous avez évidemment un cas d'utilisation. Pourquoi voudriez-vous jamais créer un commit de fusion où il n'y a pas de commit d'un côté de la branche?Réponses:
Oui, bien sûr
--no-ff
. Vous pouvez configurer les options de fusion par branche, par exempleajoute ce qui suit à votre
$(REPO)/.git/config
fichier:Note de bas de page: en parlant de mon expérience, j'ai finalement trouvé que le basculement de l'avance rapide sur off était surtout utile pour les nouveaux arrivants git - mais une fois que la sensation pour les workflows et les concepts commence à se dissiper, vous voulez certainement éviter de brouiller votre graphique de journal avec des tonnes de fusion inutile le type ..blarf distant commet.
Note de bas de page 2, une décennie plus tard: les autres réponses ci-dessous fournissent des options de configuration plus modernes, mais vraiment, vous voulez probablement rester avec les valeurs par défaut (c'est-à-dire avancer rapidement dans la mesure du possible) de nos jours, car la fusion vide ne valide vraiment que rendre l'histoire beaucoup plus difficile à raisonner.
la source
git pull
estgit fetch
+git merge
.git merge --no-ff (branchname)
? Et je veuxgit pull
fonctionner comme il l'a toujours fait?Il semble qu'il y ait encore une question en suspens dans le fil: comment le faire globalement (c'est-à-dire pour toutes les branches)? Pour les enregistrements, nous pouvons utiliser les éléments suivants:
... pour l'appliquer à toutes les branches du référentiel actuel. Pour le faire s'appliquer à toutes les branches dans tous les référentiels où quelqu'un ne l' a pas exécuté sans l'
--global
option (les paramètres locaux remplacent global) exécutez ceci:De la documentation :
la source
merge.ff
été introduit dans Git 1.7.6. Il n'est pas efficace dans les anciennes versions.puff = "pull --ff --ff-only"
En lisant le fil des réponses, j'ai fini par utiliser les deux options suivantes
Seulement vaguement lié, j'ai également trouvé que ce paramètre évite les problèmes lors de la traction
la source