2016-04-05 10 views
1

Ich hatte 1 Commit auf meinem lokalen Zweig, dann um die Änderungen von Remote-Zweig in meine lokale, habe ich eine git pull auf meinem lokalen Zweig und zu meinem Überraschung git sagte dies.Warum Git fragt eine Commit-Nachricht eingeben, um zu erklären, warum diese Zusammenführung notwendig ist

# Please enter a commit message to explain why this merge is necessary, 
# especially if it merges an updated upstream into a topic branch. 

Ich verstehe, dass ich in vi Editor bin.

Meine Frage ist Warum Git fragte mich, die Nachricht einzugeben. Ich habe es nie zuvor gesehen.

Meine git Version ist: version 1.9.5-preview20141217

I genannt this Frage, aber ich finde immer noch schwer, es zu verstehen. Danke.

+0

Welche Version von GIT verwenden Sie? – dubes

+0

Version 1.9.5-preview20141217 – ScrapCode

+0

Meine Antwort wurde mit einer Erklärung für "Warum Git hat es getan" aktualisiert. Lass mich wissen, was du denkst oder ob meine Annahmen falsch sind. – dubes

Antwort

3

Von Git Documentation:

integriert die Änderungen von einer Remote-Repository in den aktuellen Zweig. In dem Standardmodus, ist git pull Abkürzung für git von git merge FETCH_HEAD gefolgt Abruf

In Bezug auf Ihre Frage zu: WARUM

  1. Warum schafft Git eine MERGE begehen: Das ist die Standardeinstellung Verhalten von git pull. Es gibt viele Erklärungen dieses Verhaltens im Internet, this macht einen guten Job, es zu erklären.
  2. Warum ist Git für eine Commit-Nachricht zu fragen jetzt: kommen drei mögliche Optionen meiner Meinung nach:
    • Sie Ihre git Client
    • aktualisiert
    • Sie nie eine lokale Niederlassung hatte, die vor
    • vor dem Fern war
    • Ihre git Config wurde vor kurzem geändert

Wie dies zu vermeiden:

Da Ihr lokales Repository 1 Commit voraus ist, versucht git, Ihre Remote mit Ihrem lokalen Repo zu verbinden. Dies kann über die Zusammenführung gehandhabt werden, aber in Ihrem Fall suchen Sie vielleicht nach einem Rebase, d. H. Fügen Sie Ihr Commit an die Spitze hinzu.Sie können dies tun, mit

git rebase oder git pull --rebase

Wenn dies tatsächlich das Verhalten, das Sie suchen, können Sie Setup Ihre git Config eine Standardoption für Ihre git pull

Set machen rebase up global mit:

git config branch.autosetuprebase always # Force all new branches to automatically use rebase 

Oder Sie es auf je Zweig festlegen:

git config branch.*branch-name*.rebase true # Force existing branches to use rebase.