wake-up-neo.net

git: Warum "Zweig 'Master' von ... zusammenführen? wenn ziehen und schieben

Ich bin immer noch ein Neuling. Ich habe einige Quelldateien geändert und festgeschrieben. Dann habe ich git Push gemacht. Aber ich habe diesen Fehler bekommen.

To /foo/bar/  ! [rejected]        master -> master (non-fast-forward)
error: failed to Push some refs to '/foo/bar/' To prevent you from
losing history, non-fast-forward updates were rejected Merge the
remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git Push --help' for details.

Diese Zurückweisung scheint, dass ich git pull vor Push nicht getan habe. Also habe ich git pull gemacht. Okay, es gab zwei modifizierte Dateien von anderen.

Dann konnte ich erfolgreich git Pushen.

Frage: In diesem Fall sehe ich ein weiteres Protokoll mit meiner ursprünglichen Commit-Nachricht:

commit 59e04ce13b8afa...
Merge: 64240ba 76008a5
Author: Jone Doe <[email protected]>
Date:   Fri Mar 15 11:08:55 2013 -0700

    Merge branch 'master' of /foo/bar/

Und das ist meine ursprüngliche Commit-Nachricht.

commit 64240bafb07705c...
Author: Jone Doe <[email protected]>
Date:   Fri Mar 15 11:06:18 2013 -0700

    Fixed bugs and updated!

Ich würde gerne verstehen, warum "Zweig-Master der Position zusammenführen" hinzugefügt wird.

23
Nullptr

Wenn Sie einen git-pull durchgeführt haben, wurden Änderungen aus dem entfernten Zweig in Ihren lokalen Zweig eingefügt. Das automatisch generierte Commit zeigt dies an.

Das Zusammenführen kann zu Konflikten geführt haben, die dann manuell gelöst werden müssen. In Ihrem speziellen Fall war dies nicht der Fall und git konnte sich um alles kümmern.

17
r.v

Wenn Änderungen von anderen Benutzern vorgenommen werden könnten, ist es möglicherweise ratsam, einen git pull --rebase (dh Ihre neuen Änderungen nach die Remote-Änderungen hinzuzufügen; dies könnte Konflikte finden, die Sie lösen müssten) und dann git Push das Ergebnis . Seien Sie vorsichtig, dies führt zu neuen Commits, die noch nie zuvor existiert haben (wie bei jeder Neudefinition der Historie), aber es ergibt sich eine saubere, lineare Historie (kein Mischgewirr).

7
vonbrand

Ich habe das gleiche Problem, außer dass ich meine Commit-Nachricht nicht sehe und nur den Merge branch 'master' of ...

Ich habe gesehen, dass ich die Festschreibungsnachricht so ändern kann, dass meine eigene Nachricht zurückgegeben wird, indem git commit --amend ausgeführt wird. Diese zeigt tatsächlich meine ursprüngliche Nachricht in meinem Editor und druckt dann sofort Merge branch 'master' of ... in meinem Terminal. 

0
cglacet