Heim  >  Artikel  >  Entwicklungswerkzeuge  >  Versionskontrolltool Git – Zweigstellenverwaltung

Versionskontrolltool Git – Zweigstellenverwaltung

齐天大圣
齐天大圣Original
2020-06-22 09:56:592938Durchsuche

Branch ist eine Killeranwendung von Git. Im Gegensatz zu anderen Versionskontrolltools ist Git äußerst effizient beim Erstellen und Wechseln von Zweigen.

Zweigeinführung

Was ist ein Zweig? Beginnen wir mit einem Szenario, das wir sehr gut kennen. Ein Produkt, das nun auf den Markt gebracht wurde, muss um eine neue Funktion erweitert werden. Wenn wir zu diesem Zeitpunkt den ursprünglichen Zweig weiterentwickeln, ist dies sehr unpraktisch, da es sich um eine bereits gestartete Anwendung handelt, die getestet werden muss, bevor sie gestartet werden kann. Im Allgemeinen besteht unser Ansatz darin, einen neuen Zweig zu erstellen, neue Funktionen in diesem neuen Zweig zu entwickeln und sie dann nach dem Testen in den Hauptzweig zusammenzuführen.

Erstellung und Wechsel von Zweigen

Die aktuelle Situation meiner Repository-Zweige ist wie folgt:

Versionskontrolltool Git – Zweigstellenverwaltung

Zweig erstellen

Jetzt erstellen wir einen neuen Zweig, dev. Die Befehle zum Erstellen eines Zweigs und zum Anzeigen des Zweigs lauten wie folgt:

git branch 分支名
git branch

# git branch dev
# git branch
  dev
* master

Zweig wechseln

Der Zweig wurde erfolgreich eingerichtet. Wechseln wir nun zu einem neuen Zweig. Der Befehl zum Wechseln der Zweige lautet wie folgt: git checkout branch name

Versionskontrolltool Git – Zweigstellenverwaltung

und wechseln Sie dann zum Hauptzweig, nehmen Sie einige Änderungen vor und senden Sie sie ab. Anschließend schauen wir uns den Status der Filiale an.

# git checkout dev
Switched to branch 'dev'

Versionskontrolltool Git – Zweigstellenverwaltung

git vim config.php # 修改config.php文件
git add . && git commit -m 'add config.php'

git checkout master # 切换到主分支
git vim config.php
git add . && git commit -m 'change config.php'

Ein Befehl zum Erstellen und Wechseln von Zweigen

$ git log --oneline --decorate --graph --all
* ca4589c (HEAD -> master) add config file
| * 43a5a8f (dev) add config.php
|/
* 19e3186 add index.php
* 9cc82f9 first commit

Zusammenführen von Filialen

Stellen Sie zunächst ein Szenario vor, das sehr häufig vorkommt:

  • Ein System war online

  • Das System muss mit einer neuen Funktion aktualisiert werden, also erstellen Sie einen neuen Zweig (dev) und arbeiten an diesem Zweig.

  • Zu diesem Zeitpunkt trat plötzlich ein Problem im System auf, das dringend untersucht und bearbeitet werden musste.

  • Dann müssen Sie zu diesem Zeitpunkt zuerst zur Online-Version (Master) wechseln, dann einen neuen Zweig erstellen (Fehler beheben) und die Fehler im neuen Zweig korrigieren

  • Wechseln Sie nach Abschluss des Tests zum Online-Zweig, führen Sie dann den Fixbug-Zweig zusammen und übertragen Sie die Änderungen dann in den Online-Zweig.

  • Endlich können wir in den Entwicklungszweig wechseln, um weiterzuarbeiten.

Derzeit ist der Status unseres Repositorys wie folgt:

Versionskontrolltool Git – Zweigstellenverwaltung

Jetzt müssen wir einen neuen Zweig erstellen und einen neuen hinzufügen diejenigen auf der neuen Zweigfunktion.

git checkout -b 新分支名

Nehmen Sie dann einige Änderungen am neuen Zweig vor.

Versionskontrolltool Git – Zweigstellenverwaltung

Zu diesem Zeitpunkt trat online ein schwerwiegender Fehler auf, der dringend behandelt werden musste. Nun, zuerst muss ich zum Hauptzweig wechseln. Beim Wechsel ist jedoch ein Fehler aufgetreten

git checkout -b dev

Der obige Fehler tritt häufig auf. Dies liegt daran, dass

Beim Zusammenführen von Zweigen der Arbeitsbereich und der Bereitstellungsbereich „sauber“ sein müssen. Es gibt zwei Möglichkeiten, die oben genannten Anforderungen zu erreichen

  • Änderungen einreichen

  • Inszenierung

Wir sind Hier verwenden Sie die temporäre Methode, um

zu demonstrieren

$ git stash
$ git checkout master
Switched to branch 'master'

当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。

现在,我们新建fixbug分支,在这个分支上修复bug。

$ git checkout -b fixbug

合并分支

修复完成且测试通过时,就可以把它合并到master上了。合并使用git  merge 分支名

$ git checkout master Switched to branch 'master' 
$ git merge fixbug

删除分支

这个时候,fixbug功能已经完成了,可以将它给删除掉了。

$ git branch -d fixbug 
Deleted branch fixbug (was cca73bb).

现在,我们可以继续在dev分支上工作了。我们需要把之前暂存的内容取出来。

$ git checkout dev

$ git stash pop
On branch dev
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   login.php

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (2f8476defbaa813e31f3e1b081f5b88416b2ff50)

新功能完成后,提交到版本库。

Versionskontrolltool Git – Zweigstellenverwaltung

冲突解决

现在我们新的功能完成了,那么就可以把它合并到master分支上了。现在我们来演示合并时遇到冲突时,如何去解决。

$ git checkout master
Switched to branch &#39;master&#39;

$ git merge dev
Auto-merging index.php
CONFLICT (content): Merge conflict in index.php
Automatic merge failed; fix conflicts and then commit the result.

提示我index.php合并的时候有冲突,我们来看看该文件

$ cat index.php
<?php

<<<<<<< HEAD
echo &#39;hello world&#39;;
=======
echo &#39;version 1.1 finished&#39;;
>>>>>>> dev
<br/>
$ cat index.php 
<?php 
echo &#39;version 1.1 finished&#39;;

然后再add并提交,最后在提交

$ git commit -m &#39;merge dev&#39;

这个时候就合并成功了,现在就去删除dev分支吧。

$ git branch -d dev

Das obige ist der detaillierte Inhalt vonVersionskontrolltool Git – Zweigstellenverwaltung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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