2010-08-04 19 views
74

Ich habe gerade erst begonnen, GIT zu verwenden und denke, dass es wunderbar ist, aber ich bin ein wenig verwirrt über das, was der merge Befehl tut.2 Zweige in GIT zusammenfügen

Sagen wir, wir haben ein Arbeitsprojekt in der Branche "A".

Ich gehe nach Hause und Änderungen an diesem Zweig und speichern Sie es als "B". Ein anderer Programmierer nimmt Änderungen an "A" vor und speichert sie als "C".

Gibt es eine Möglichkeit, die beiden Zweige "B" und "C" zusammenzuführen, dann die Änderungen als neuen Zweig zu übergeben, sagen wir "D"?

Oder fehlt der Punkt von "merge"?

+0

keine Änderungen in einem anderen Zweig speichern. arbeite ein A und füge dann diese verschiedenen A zusammen – knittl

+0

ich folge nicht. A wäre auf meinem lokalen Computer, dev1 würde eine Kopie von A auf seinem Computer haben, und dev2 hat eine Kopie von A auf seinem Computer. Beide Entwickler nehmen Änderungen vor, wie füge ich diese Änderungen zusammen? – dotty

+0

siehe . die Devs müssen wahrscheinlich irgendwo ihr Repository verschieben/hochladen – knittl

Antwort

127

merge wird verwendet, um zwei (oder mehr) Zweige zusammen zu bringen.

ein kleines Beispiel:

# on branch A: 
# create new branch B 
$ git checkout -b B 
# hack hack 
$ git commit -am "commit on branch B" 

# create new branch C from A 
$ git checkout -b C A 
# hack hack 
$ git commit -am "commit on branch C" 

# go back to branch A 
$ git checkout A 
# hack hack 
$ git commit -am "commit on branch A" 

so jetzt gibt es drei getrennte Zweige (nämlich AB und C) mit verschiedenen Köpfen

die Änderungen von B und C zurück zu A zu erhalten, Check-out A (bereits in diesem Beispiel getan) und verwenden Sie dann den Befehl merge:

# create an octopus merge 
$ git merge B C 

Ihre Geschichte wird dann wie folgt aussehen:

…-o-o-x-------A 
     |\  /| 
     | B---/ | 
     \ /
     C---/ 

Wenn Sie die Repository/Computer-Grenzen zusammenführen möchten, sehen Sie sich den Befehl git pull an, z. vom PC mit Zweig A (dieses Beispiel erstellt zwei neue Commits):

# pull branch B 
$ git pull ssh://host/… B 
# pull branch C 
$ git pull ssh://host/… C 
+0

Ich habe einen "content conflict" -Fehler beim Zusammenführen der Zweige bekommen. – dotty

+0

das bedeutet, dass beide Zweige das gleiche Stück Code geändert haben. korrigiere die Konflikte, 'git add conflicting_files' und dann' git commit' – knittl

+0

Sag, dass die Datei in A das Wort "Hallo" enthielt, das A änderte es zu "HALLO" und B änderte es zu "Hallo Welt". Was wäre das Ergebnis der Zusammenführung dieser Dateien? – dotty