Heim >php教程 >PHP开发 >Ausführliche Erläuterung der Filialverwaltung im Git-Tutorial

Ausführliche Erläuterung der Filialverwaltung im Git-Tutorial

黄舟
黄舟Original
2016-12-16 15:04:321394Durchsuche

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 &#39;change_site&#39;

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)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn