2012-07-31 5 views
107

Vor kurzem, nach dem git pull, hat Git begonnen, meinen Texteditor zu erzeugen und nach einer Merge-Commit-Nachricht zu fragen. Eine Commit-Nachricht ist bereits im Voraus ausgefüllt, und ich muss nur das Fenster speichern und schließen, um den Pull abzuschließen.Warum fordert mich Git zu einer Post-Pull-Merge-Commit-Nachricht auf?

In der Vergangenheit würde es die Zusammenführung im Hintergrund mit einer Standard-Commit-Nachricht (in den Zeilen Merge branch 'dev' of remote.com:/repo into dev) tun.

Ich habe kürzlich git auf Version 1.7.11.3 (über Homebrew) aktualisiert, kann aber an nichts anderes denken, das ich getan habe, um dieses Verhalten zu ändern. Ist das eine Einstellung, oder gibt es sonst einen Weg zurück zu dem, wie es war?

Antwort

122

In git 1.7.10 entschieden sich die git-Entwickler dafür, dass Merge-Commits zu einfach gemacht werden könnten. Wie in this blog post, erläutert, sollte das Erzwingen des Verhaltens der interaktiven Festschreibe-Nachricht diese Übermittlungsnachrichten detaillierter machen und könnte die Gesamtfrequenz unnötiger Zusammenführungen reduzieren.

Sie können die Flag verwenden, um dieses Verhalten zu vermeiden, aber, nun, nicht. Merge-Commits sollten wie alle Commits für History gut konstruiert sein. Deine Geschichte sollte nichts als nützlich sein. Folgendes im Terminal

git config --global core.mergeoptions --no-edit

+0

Großartig, danke für diese Info. – shanebonham

+40

Danke für die Hilfe. Ich bin nicht der Meinung, dass Zusammenführungs-Commits immer beschreibend sein sollten. Der Grund, warum ich nachgesehen habe, ist, dass automatische Zusammenführungen, wann immer ich ziehe, mich bitten zu erklären, warum die Zusammenführung notwendig ist, was schnell unzumutbar wird, da es sogar passiert, wenn ich keine Änderungen habe. – Brian

+8

Dies ist auch eine nützliche Ressource, um dieses Verhalten zu vermeiden: http://longair.net/blog/2009/04/16/git-fetch-and-merge/ Sie sollten 'git pull' vermeiden; Verwenden Sie 'git merge --ff-only', wenn Sie nur versuchen, zu aktualisieren, und Sie glauben, dass Sie keine lokalen Änderungen haben; Verwenden Sie 'git merge --no-ff', wenn Sie tatsächlich versuchen, einen Zweig zusammenzuführen. – Glyph

40

Um eine Verknüpfung für eine spätere Verwendung zu erstellen, entweder Beachten Sie die Warnungen in Christopher's Antwort oben.

Wenn Sie dann noch die automatische Zusammenführung deaktivieren möchten Nachrichtenaufbereitung verpflichten, diese Umgebungsvariable gesetzt:

GIT_MERGE_AUTOEDIT = no 

Diese Umgebungsvariable und die Einstellung „Nein“ werden auf der git merge doc Seite dokumentiert. Es wird empfohlen, sie nur in Skripten zu verwenden, die nicht interaktiv zusammengeführt werden müssen, aber natürlich kann sie als Teil Ihrer Shell-Umgebung festgelegt werden, um ihre Auswirkungen dauerhaft zu machen.

+12

Das hat bei mir nicht funktioniert (git auf OSX), und ich habe es richtig eingestellt ist, am Ausgang des 'git suchen Config --global core.mergeoptions'. – jvannistelrooy

+3

Funktioniert auch nicht für mich –

4

Erste

[core] 
    mergeoptions = --no-edit 

Oder ausführen:

Bearbeiten Sie Ihre ~/.gitconfig mit folgenden -: