Git Branch Management
Fast jedes Versionskontrollsystem unterstützt Branches in irgendeiner Form. Durch die Verwendung von Verzweigungen können Sie von der Hauptentwicklungslinie abzweigen und weiterarbeiten, ohne die Hauptentwicklungslinie zu beeinträchtigen.
Manche Leute nennen das Verzweigungsmodell von Git eine „Nirvana-Funktion“, und gerade dadurch unterscheidet es Git von der Familie der Versionskontrollsysteme.
Verzweigungsbefehl erstellen:
git branch (branchname)
Verzweigungsbefehl wechseln:
git checkout (Zweigname)
Wenn Sie Zweige wechseln, ersetzt Git den Inhalt Ihres Arbeitsverzeichnisses durch den zuletzt übermittelten Snapshot des Zweigs, sodass für mehrere Zweige nicht mehrere Verzeichnisse erforderlich sind.
Befehl „Zweig zusammenführen“:
git merge
Sie können den gleichen Zweig mehrmals zusammenführen oder ihn löschen direkt nach der Zusammenführung.
Git-Zweigverwaltung
Zweige auflisten
Grundlegender Befehl zum Auflisten von Zweigen:
git branch
Ohne Parameter listet Git Branch Ihre lokalen Zweige auf.
$ git branch
* master
Dieses Beispiel bedeutet, dass wir einen Zweig namens „master“ haben und dieser Zweig der aktuelle Zweig ist.
Wenn Sie git init ausführen, erstellt Git standardmäßig den „Master“-Zweig für Sie.
Wenn wir manuell einen Zweig erstellen und zu diesem wechseln möchten. Führen Sie einfach git branch (branchname) aus.
$ git branch testing $ git branch * master testing
Jetzt können wir sehen, dass es einen neuen Zweig gibt, der testet.
Wenn Sie auf diese Weise nach dem letzten Update-Commit einen neuen Zweig erstellen, wenn es später einen Update-Commit gibt, wechseln Sie dann zum Zweig „testing“, Git
Ihr Arbeitsverzeichnis wird in dem Zustand wiederhergestellt, in dem es war, als Sie den Zweig erstellt haben.
Als nächstes zeigen wir, wie Sie Zweige wechseln. Wir verwenden git checkout (branch), um zu dem Zweig zu wechseln, den wir ä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
Als wir zum Zweig „Testen“ wechselten, wurde die neue Datei test.txt, die wir hinzugefügt hatten, entfernt.
Die ursprünglich gelöschte Datei hello.php erschien erneut. Beim Zurückwechseln in den „Master“-Zweig tauchten sie wieder auf.
$ git checkout master Switched to branch 'master' $ ls README test.txt
Wir können auch den Befehl git checkout -b (branchname) verwenden, um einen neuen Zweig zu erstellen und sofort zu diesem zu wechseln sind in dieser Branche tätig.
$ 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 einen Zweig erstellt, einige Dateien im Kontext dieses Zweigs entfernt und sind dann zurück zu unserem Hauptzweig gewechselt, den Dateien sind zurück.
Verwenden Sie Zweige, um die Arbeit zu trennen, sodass wir Dinge in verschiedenen Kontexten erledigen und hin und her wechseln können.
Zweig löschen
Verzweigungsbefehl löschen:
git branch -d (branchname)
Für Beispiel: Wir möchten den Zweig „Testen“ löschen:
$ git branch * master testing $ git branch -d testing Deleted branch testing (was 85fc7e7). $ git branch * master
Zweigzusammenführung
Sobald ein Zweig unabhängige Inhalte hat, werden Sie dies irgendwann tun Sie möchten es wieder in Ihren Hauptzweig einbinden. Sie können den folgenden Befehl verwenden, um einen beliebigen Zweig mit dem aktuellen Zweig zusammenzuführen:
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
Im obigen Beispiel werden wir das tun verwenden newtest Der Zweig wird mit dem Hauptzweig zusammengeführt und die Datei test2.txt wird gelöscht.
Konflikte zusammenführen
Beim Zusammenführen handelt es sich nicht nur um einen einfachen Vorgang zum Hinzufügen und Entfernen von Dateien, Git führt auch Änderungen zusammen.
$ git branch * master $ cat test.txt w3cschool.cc 首先,我们创建一个叫做"change_site"的分支,切换过去,我们将内容改为 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(-)
Senden Sie den geänderten Inhalt an den Zweig „change_site“. Wenn wir nun zurück zu „Master“ wechseln In der Verzweigung können wir sehen, dass der Inhalt wieder in dem Zustand ist, in dem er war, bevor wir ihn geändert haben. Wir ändern die Datei test.txt erneut.
$ 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(+)
Jetzt wurden diese Änderungen in meiner „Master“-Filiale erfasst. Als nächstes führen wir den Zweig „change_site“ zusammen.
$ 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 haben den vorherigen Zweig mit dem „Master“-Zweig zusammengeführt, und als Nächstes ist ein Zusammenführungskonflikt aufgetreten Sie müssen es manuell ä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 können wir git add verwenden, um Git mitzuteilen, dass der Dateikonflikt gelöst wurde
$ 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 die Konflikte bei der Zusammenführung erfolgreich gelöst und die Ergebnisse übermittelt.
Das Obige ist die detaillierte Erklärung der Filialverwaltung im Git-Tutorial. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn)!