Git-Zweigs Management
Fast unterstützen alle Versionskontrollsysteme eine Form der Niederlassung. Es bedeutet, dass Sie einen Zweig von der Hauptentwicklungslinie können zu trennen und wirkt sich nicht auf die Hauptlinie, während weiter zu arbeiten.
Jemand Git Verzweigung Modell "Nirwana Merkmale" genannt, aber gerade weil sie aus dem Git Versionskontrollsystem für die Familie aus.
Erstellen Sie einen Sprungbefehl:
git branch (branchname)
Zweigschaltbefehl:
git checkout (branchname)
Wenn Sie Zweige wechseln, wird Git die Niederlassung des endgültigen Einreichungen Schnappschüsse verwenden Sie den Inhalt Ihres Arbeitsverzeichnis ersetzen, hat mehrere Zweig nicht mehrere Verzeichnisse erfordern.
Merge Branches Befehl:
git merge
Sie können oft in eine einheitliche Zweig zusammenführen, können Sie auch Zweige zu löschen wählen Sie direkt nach der Fusion eingebracht.
Git-Zweigs Management
Listen Zweig
Basic-Befehle werden in der Branche aufgeführt:
git branch
Wenn keine Argumente, git Zweig wird in Ihrem lokalen Niederlassung aufgeführt werden.
$ git branch * master
In diesem Fall bedeutet dies, dass wir einen "Master" Zweig genannt haben, und der Zweig ist der aktuelle Zweig.
Wenn Sie git init ausführen, wird der Standard-Git "master" Branch für Sie erstellen.
Wenn wir wollen, um manuell einen Zweig erstellen und wechseln. Führen Sie git branch (branch) sein kann.
$ git branch testing $ git branch * master testing
Jetzt können wir mit einem neuen Zweig Prüfung sehen.
Wenn Sie ein Update auf diese Weise in dem eine Niederlassung erstellt zuletzt einreichen, wenn später auch Aktualisierungen einreichen, und wechseln Sie dann auf den Zweig "testing", wird Git Arbeitsverzeichnis wiederherstellen aussehen, wenn Sie einen Zweig erstellen
Als nächstes werden wir Ihnen zeigen, wie Zweige zu wechseln, wechselten wir mit git checkout (Zweig), die wir den Zweig zu ändern möchten.
$ ls README $ echo 'w3cschool.cc' > test.txt $ git add . $ git commit -m 'add test.txt' [master 048598f] add test.txt 2 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 hello.php create mode 100644 test.txt $ ls README test.txt $ git checkout testing Switched to branch 'testing' $ ls README hello.php
Wenn wir auf die "Prüfung" Zweig geschaltet, fügen wir eine neue Datei test.txt entfernt wurde, wird die Originaldatei gelöscht Datei hello.php entstanden ist. Zurückschalten zum "Master" Zweig, haben sie wieder aufgetaucht.
$ git checkout master Switched to branch 'master' $ ls README test.txt
Wir können auch git checkout -b (branch) Befehl verwenden, um einen neuen Zweig zu erstellen und sofort auf den Zweig eingeschaltet, um in dieser Branche zu arbeiten.
$ git checkout -b newtest Switched to a new branch 'newtest' $ git rm test2.txt rm 'test2.txt' $ ls README test.txt $ git commit -am 'removed test2.txt' [newtest 556f0a0] removed test2.txt 1 file changed, 1 deletion(-) delete mode 100644 test2.txt $ git checkout master Switched to branch 'master' $ ls README test.txt test2.txt
Wie Sie sehen können, haben wir eine Filiale erstellt haben, einige Dateien im Zusammenhang mit dieser Branche, zu entfernen und dann zu unserem Hauptzweig zurückschalten, diese Dateien zurück.
Verwenden Sie separate Schneidezweig arbeiten, so dass wir die Dinge in verschiedenen Kontexten tun können, und hin und her schalten.
entfernen Sie Zweige
Entfernen Sie den Sprungbefehl:
git branch -d (branchname)
Zum Beispiel wollen wir "Test" Zweig zu entfernen:
$ git branch * master testing $ git branch -d testing Deleted branch testing (was 85fc7e7). $ git branch * master
Merge Zweig
Sobald ein Zweig unabhängigen Inhalt hat, werden Sie schließlich es Zweig zurück in Ihr Master zusammenführen möchten. Sie können den folgenden Befehl verwenden, um jede Niederlassung in den aktuellen Zweig zusammengeführt:
git merge
$ git branch * master newtest $ ls README test.txt test2.txt $ git merge newtest Updating 2e082b7..556f0a0 Fast-forward test2.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 test2.txt $ ls README test.txt
Die obigen Beispiele werden wir in die Haupt Ast zu Ast fusionierte testNeu wird test2.txt Datei gelöscht.
Konflikte beim Zusammen
In Kombination und nicht einfach eine Datei hinzufügen, die Operation entfernt wurde, wird Git verschmelzen auch die Änderungen.
$ git branch * master $ cat test.txt w3cschool.cc
Erstens haben wir ein Verzeichnis namens "change_site" Zweigschalten in der Vergangenheit schaffen, werden wir zufrieden sein, zu www.w3cschool.cc.
$ git checkout -b change_site Switched to a new branch 'change_site' $ vim test.txt $ head -1 test.txt www.w3cschool.cc $ git commit -am 'changed the site' [change_site d7e7346] changed the site 1 file changed, 1 insertion(+), 1 deletion(-)
Der modifizierte Inhalt eingereicht Zweig "change_site". Nun, wenn Sie auf den "Master" Zweig zurückschalten, die wir zurückkommen können den Inhalt unserer Änderungen zu sehen, bevor wir die Datei test.txt wieder ändern.
$ git checkout master Switched to branch 'master' $ head -1 test.txt w3cschool.cc $ vim test.txt $ cat test.txt w3cschool.cc 新增加一行 $ git diff diff --git a/test.txt b/test.txt index 704cce7..f84c2a4 100644 --- a/test.txt +++ b/test.txt @@ -1 +1,2 @@ w3cschool.cc +新增加一行 $ git commit -am '新增加一行' [master 14b4dca] 新增加一行 1 file changed, 1 insertion(+)
Nun wurden diese Veränderungen in meinem "Master" der Branche erfasst. Als nächstes werden wir "change_site" Zweig Konsolidierung über.
$ git merge change_site Auto-merging test.txt CONFLICT (content): Merge conflict in test.txt Automatic merge failed; fix conflicts and then commit the result. $ cat test.txt <<<<<<< HEAD w3cschool.cc 新增加一行 ======= www.w3cschool.cc >>>>>>> change_site
Wir verschmelzen vor einem Zweig zu "Master" Zweig, ein Merge Konflikt entsteht, dann müssen wir es manuell zu ändern.
$ vim test.txt $ cat test.txt www.w3cschool.cc 新增加一行 $ git diff diff --cc test.txt index f84c2a4,bccb7c2..0000000 --- a/test.txt +++ b/test.txt @@@ -1,2 -1,1 +1,2 @@@ - w3cschool.cc + www.w3cschool.cc +新增加一行
In Git, git hinzufügen, dass wir Git Dateikonflikt zu sagen können, wurde behoben
$ git status -s UU test.txt $ git add test.txt $ git status -s M test.txt $ git commit [master 88afe0e] Merge branch 'change_site'
Jetzt haben wir erfolgreich merge Konflikte gelöst und die Ergebnisse vorzulegen.