Wie mache ich die Standardeinstellung von git merge --no-ff --no-commit?

80

Die Unternehmensrichtlinie wird --no-fffür Merge-Commits verwendet. Ich persönlich möchte die Zusammenführungsprotokollnachrichten so anpassen, dass ich sie verwende --no-commit. Außerdem kompiliere und teste ich gerne, bevor ich das Commit loslasse.

Wie mache ich --no-ffund --no-commitdie Standardeinstellung für mich für alle Filialen?

(und ich habe in den Jahren, seit ich dies gefragt habe, gelernt, dass ich fast immer mit dem Commit zufrieden bin, daher ist es einfacher, es standardmäßig festschreiben zu lassen, und solange ich Dinge ändere oder anderweitig repariere, bevor ich einen Push mache, sind die Dinge alles gut...)

Streifen
quelle
ältere verwandte: stackoverflow.com/questions/2500296/…
Cregox

Antworten:

110

Geben Sie dies in $ HOME / .gitconfig ein:

[merge]
    ff = no
    commit = no

Sie können dazu git-config verwenden:

  git config --global merge.commit no
  git config --global merge.ff no
William Pursell
quelle
1
Bist du sicher, dass das funktioniert? Es ist nicht für mich, ich musste entweder branch.master.mergeoptions="--no-ff"oder merge.ff="no"(siehe Antwort unten)
gaizka
@gaizka In der Tat funktioniert es in 1.7.2 und in 1.7.7.2 nicht. Ich werde später versuchen, ältere Versionen zu überprüfen.
William Pursell
@Stripes mit dem Befehl git config, setzt es in [merge], nicht in [core]
Tisch
39

--no-ff --no-commitStellen Sie die folgenden Optionen ein, um das Standard-Zusammenführungsverhalten festzulegen no:

git config --global merge.ff no
git config --global merge.commit no

Das Problem dabei ist jedoch, dass git pull= git fetch+ git merge. Wenn Sie also vom Remote-Server abrufen, erstellen Sie ein hässliches Zusammenführungs-Commit, wenn ein einfacher schneller Vorlauf erforderlich wäre. Um dies zu lösen, stellen Sie pull.ffFolgendes ein yes:

git config --global pull.ff yes
Jian
quelle
17
Dies gilt zwar für die Verwendung von Zusammenführungsoptionen, es sollte jedoch beachtet werden, dass dies bei Verwendung merge.ffstattdessen nicht der Fall ist. Dies wirkt sich nur auf explizite Zusammenführungen aus, während Pulls weiterhin den gewünschten schnellen Vorlauf ausführen .
Nick
3
Wenn ich verwende merge.ff = no, git pullwerden Zusammenführungs-Commits erstellt.
Matt McClure
3
Um dies zu lösen, sollten Sie git pull --rebase( git-scm.com/docs/git-pull ) oder configure branch.autosetuprebase( git-scm.com/docs/git-config.html ) verwenden
Cybot
8
oder verwenden Siepull.ff = yes
gabeio
20

Ab Version 1.7.6 von git sollten Sie verwenden

git config [--global] merge.ff no

--no-ffbei jeder Zusammenführung "erzwingen" .

Standardverhalten ist

git config [--global] merge.ff yes

Und mit

git config [--global] merge.ff only

Nicht-Schnellvorlauf-Zusammenführungen werden abgelehnt

Gaizka
quelle
10

Laut Handbuch sollten Sie verwenden

$ git config [--global] merge.ff false

Standardmäßig wird für alle Zweige mit dem Dienstprogramm git-config die Option "Kein schneller Vorlauf" festgelegt.

Alexkle
quelle