2012-06-21 6 views
16

Nach dem Fern mit git fetch holen, brauchen wir so etwas wiewas macht git fusionur/master tun?

git merge origin/master 

Ich mag auch, wenn dieser Befehl git commit zur gleichen Zeit nutzen würde wissen, das tut? Ist die Reihenfolge origin/master wichtig? Kann ich master/original schreiben?

+0

Sie sollten sich wirklich durch [The Book] (http://git-scm.com/book/en/Git-Branching-Remote-Branches) arbeiten. – kostix

Antwort

8

Das führt den Zweig, der als Ursprung/Master bezeichnet wird, in Ihrem aktuellen Zweig zusammen. Die Bestellung ist sehr wichtig. Das Wort Herkunft bedeutet der Ort, von dem Sie Ihr Repository geklont, dh der Ursprung des Repository, das Wort Master ist nur ein Zweig Name, aber Master wird in der Regel als Haupt Zweig oder Stamm Zweig verwendet wie einige andere Systeme es nennen.

Die Zusammenführung kann abhängig vom Entwicklungsstand eine Festschreibung erfordern. Wenn Ihre Geschichte nicht vom Ursprung abweicht, kann sie das tun, was Schnellvorlauf genannt wird --- alles, was getan werden muss, wird die neue Geschichte auf Ihre setzen. Wenn Ihre Entwicklung vom Ursprung abweicht, dann kann, wenn die Zusammenführung ohne Konflikte durchgeführt werden kann, die Zusammenführung durchgeführt und ein neues Festschreiben bei HEAD aufgezeichnet werden, um die Zusammenführung und die zwei Eltern zu spezifizieren.

Wenn die Zusammenführung aufgrund eines Konflikts nicht möglich ist, wird Ihre Arbeitskopie aktualisiert, um die Tatsache widerzuspiegeln, dass Konflikte bestehen. Wenn Sie sie beheben, führen Sie manuell die Festschreibung durch, die die Zusammenführung aufzeichnet.

+0

Ihre Antwort ist an zwei Stellen falsch.Erstens: "_ mergt Ihren aktuellen Zweig mit dem Zweig, der als Ursprung/Meister bezeichnet wird" ist falsch, weil Ursprung/Meister ** in ** aktuellen Zweig zusammengeführt wird. Oder vielleicht ist das eine Zweideutigkeit, die ich an diesem Ort sehe, dann bitte klarstellen. Zweitens führt "git merge" ** Commits ** in einigen Fällen durch (z. B. wenn nicht ausdrücklich gesagt wird, dass sie nicht ausgeführt werden sollen und wenn die Zusammenführung im Schnellvorlauf durchgeführt werden kann.) – Tadeck

+0

Ja, das habe ich gemeint Ich meine, dass ein Fast-Forward eigentlich der gleiche wie ein Commit ist? Ich hatte den Eindruck, dass ein Fast-Forward eher dem Spleißen des neuen Entwicklungsverlaufs dient als das eigene. – Jarryd

+0

Siehe: http: //www.kernel.org/pub/software/scm/git/docs/git-merge.html#_description - vor allem diese Zeile: "_ (...)' git merge topic "wird die am' ' topic' branch, da es von "master" (...) bis zu seinem aktuellen Commit über "Master" abweicht und ** das Ergebnis in einem neuen Commit ** zusammen mit den Namen der beiden Eltern-Commits und einem Log aufzeichnet Nachricht des Benutzers, der die Änderungen beschreibt. "Ich glaube, das ist ziemlich klar. Es führt ** das Commit durch (es sei denn, ein Konflikt wird erkannt und Sie müssen ihn beheben es zuerst). – Tadeck

19

git merge origin/master kann eines von zwei Dingen (oder Fehler) tun.

Im ersten Fall erstellt es ein neues Commit, das zwei Eltern hat: das aktuelle HEAD, und das Commit, auf das ref zeigt origin/master (es sei denn, Sie tun etwas lustiges, ist dies wahrscheinlich der lokale Zeiger to) der Zweig mit dem Namen master auf einer Fernbedienung namens origin, obwohl dies völlig konventionell ist).

Im zweiten Fall, in dem keine Zusammenführung auf Baumebene erforderlich ist, anstatt einen neuen Festschreibevorgang zu erstellen, wird der aktuell ausgecheckte Verweis aktualisiert, um auf denselben Festschreibungspunkt zu zeigen, auf den origin/master zeigt. (Dies wird Schnellvorlauf Merge - Git kann angewiesen werden, entweder immer oder nie dies tun, wenn Sie über Befehlszeilen-Flags zusammenführen).

Es ruft nicht git commit direkt, die eine höhere Ebene (Porzellan in der Git-Sprache) Befehl für Benutzer bestimmt ist.

git merge master/original Aufruf versuchen und lösen master/original zu einem Commit, die mit ziemlicher Sicherheit wird (wieder, wenn Sie etwas absichtlich getan haben) nicht die gleiche wie origin/master sein. Wenn Sie einen Remote mit dem Namen master haben, der einen Zweig mit dem Namen original hat, wird ein neuer Commit erstellt, der diesen als zweiten Elternteil enthält.

Sie können git help rev-parse hilfreich finden, um zu entschlüsseln, wie git versucht, Ref-Namen oder andere Notationen in Commits aufzulösen.