Inhaltsverzeichnis
Pull oder Fetch
merge or rebase
🎜🎜Das folgende Bild ist ein Flussdiagramm nach der Fusion. Wann Wir Der main-Zweig ruft einen dev für die Entwicklung ab. Zu diesem Zeitpunkt verfügen beide Zweige über Übermittlungsdatensätze. Wenn wir zusammenführen, sollte die normale Situation darin bestehen, direkt auf der Grundlage von zusammenzuführen main. Anstatt eine weitere C7-Übermittlungsinformation hinzuzufügen, nämlich den oben erwähnten Merge-Zweig, ist dies offensichtlich ein sehr unvernünftiges Phänomen (natürlich hat dies keine Auswirkungen auf die Git-Arbeit). normalerweise). 🎜🎜🎜🎜So lösen Sie das Problem Welche Probleme verursacht das Phänomen? Die Antwort lautet git rebase, allgemein bekannt als Rebase. 🎜

下面我们先来看看变基以后git分支是什么样的了

可以看到,当dev分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。

示例操作" >🎜merge oder rebase🎜🎜🎜Für die oben genannten Zusammenführungsvorgänge führen wir im Allgemeinen einen bestimmten Zweig direkt über den Zweig git merge <branch name> zusammen Code. Schauen wir uns zunächst das Problem bei der direkten Verwendung von git merge an. Es gibt eine sehr unangenehme Merge branch-Meldung, wie in der folgenden Abbildung dargestellt: 🎜🎜🎜🎜Das folgende Bild ist ein Flussdiagramm nach der Fusion. Wann Wir Der main-Zweig ruft einen dev für die Entwicklung ab. Zu diesem Zeitpunkt verfügen beide Zweige über Übermittlungsdatensätze. Wenn wir zusammenführen, sollte die normale Situation darin bestehen, direkt auf der Grundlage von zusammenzuführen main. Anstatt eine weitere C7-Übermittlungsinformation hinzuzufügen, nämlich den oben erwähnten Merge-Zweig, ist dies offensichtlich ein sehr unvernünftiges Phänomen (natürlich hat dies keine Auswirkungen auf die Git-Arbeit). normalerweise). 🎜🎜🎜🎜So lösen Sie das Problem Welche Probleme verursacht das Phänomen? Die Antwort lautet git rebase, allgemein bekannt als Rebase. 🎜

下面我们先来看看变基以后git分支是什么样的了

可以看到,当dev分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。

示例操作

其他命令参考
Heim Entwicklungswerkzeuge Idiot Lassen Sie uns darüber sprechen, wie Sie Code in Gitlab elegant abrufen und zusammenführen können

Lassen Sie uns darüber sprechen, wie Sie Code in Gitlab elegant abrufen und zusammenführen können

Mar 28, 2023 pm 07:09 PM
git github gitlab

Wie kann man Code in Gitlab elegant abrufen und zusammenführen? Der folgende Artikel stellt Ihnen die Methode zum Abrufen und Zusammenführen von Code in Gitlab vor. Ich hoffe, er wird Ihnen hilfreich sein!

Lassen Sie uns darüber sprechen, wie Sie Code in Gitlab elegant abrufen und zusammenführen können

Pull oder Fetch

Es gibt zwei Formen von Pull-Code-Operationen: git pull und git fetch. Was ist also der Unterschied zwischen den beiden? ? git pullgit fetch,那么这两种有什么区别呢?

让我们先来看看一个架构图

图中展示一个完整的git流程,为了更清晰的了解每个区域,我们下来解释一下他们的功能:

  • 工作区(working directory), 简言之就是你工作的区域。对于git而言,就是的本地工作目录。
  • 暂存区(stage area, 又称为索引区index), 是把修改提交版本库前的一个过渡阶段。在工作目录下.git的目录里面有个index文件,存储着关于暂存区的内容。git add命令将工作区内容添加到暂存区。
  • 本地仓库(local repository), 版本控制系统的仓库,存在于本地。当执行git commit命令后,会将暂存区内容提交到仓库之中。.git/objects目录中存放了每一个提交的记录,而在.git/refs目录下存放的是分支信息和tag信息。
  • 远程版本库(remote repository), 与本地仓库概念基本一致,不同之处在于一个存在远程,可用于远程协作,一个却是存在于本地。通过push/pull可实现本地与远程的交互;
  • 远程仓库副本, 可以理解为存在于本地的远程仓库缓存。当使用git fetch拉取远程代码仓库的时候,就相当于在本地有一个远程仓库的副本,你可以选择把这个副本合并到本地仓库中。

从图中可以看出来,当我们使用git pull拉取代码的时候,是直接合并到了本地分支,而使用git fetch拉取代码的时候,会先在本地生成一个远程仓库的副本,然后使用git merge或者git rebase合并到本地分支。

既然能直接git pull何必多次一举呢?试想一个场景,当你想合并别人的代码,又不知道人家改了什么东西,是否能够跟你代码合并到一起,这时候通过git fetch就能很轻易的实现。git fetch以后实际并不会立马跟本地分支立马合并,在git fetch以后,会显示如下图:

上图显示了远程新增了一个test2分支,在test分支上多了个一个提交信息,这时候在.git/refs/remotes/origin目录下可以看到多了一个test2分支。

使用git log origin/test,可以查看具体的提交信息

如果想查看提交的内容是啥,只能通过新建一个分支,

git checkout -b test-origin
git merge test
Nach dem Login kopieren

讲到这里,相信你已经明白了git pullgit fetch的区别了吧。总结一下:

  • git fetch 更安全,更人性化

  • git pull 更激进,破坏性更强

一般的Leader在管理项目的时候都是习惯性的使用git fetch查看最近新增了哪些分支,做了哪些修改,从而对项目做出更好的把控。

merge or rebase

上面提到的合并操作,一般我们直接是通过git merge <分支名>去合并某个分支的代码。先看看直接使用git merge的问题,有一条看着很不顺眼的Merge branch信息,如下图所示:

下图是合并后的一个流程图,当我们在main分支拉一个dev进行开发,这时候两个分支都有提交记录,当我们合并的时候,正常情况应该是在main的基础上,直接合并,而不是多了一个C7的提交信息,也就是上面提到的Merge branch,这显然是一个很不合理的现象(当然这也不影响git正常工作)。

那如何解决这个现象导致的问题呢?答案就是git rebase

Werfen wir zunächst einen Blick auf ein Architekturdiagramm🎜🎜🎜🎜Das Bild zeigt einen vollständigen Git-Prozess. Um die einzelnen Bereiche besser zu verstehen, erklären wir ihre Funktionen: 🎜
  • 🎜Arbeitsverzeichnis, 🎜 Einfach Mit anderen Worten, es ist der Bereich wo Sie arbeiten. Für Git ist es das lokale Arbeitsverzeichnis.
  • 🎜Staging-Bereich (Stufenbereich, auch Indexbereichsindex genannt) 🎜 ist eine Übergangsphase vor der Übermittlung von Änderungen an das Repository. Im Verzeichnis .git unter dem Arbeitsverzeichnis befindet sich eine Datei index, in der der Inhalt des temporären Speicherbereichs gespeichert wird. Der Befehl git add fügt den Inhalt des Arbeitsbereichs zum Staging-Bereich hinzu.
  • 🎜Lokales Repository, 🎜 Das Repository des Versionskontrollsystems, existiert lokal. Wenn der Befehl git commit ausgeführt wird, wird der Inhalt des Staging-Bereichs an das Warehouse übermittelt. Das Verzeichnis .git/objects speichert Datensätze jeder Übermittlung, während das Verzeichnis .git/refs Zweiginformationen und Tag-Informationen speichert.
  • 🎜Remote-Repository 🎜 ist im Grunde das gleiche Konzept wie das lokale Warehouse. Der Unterschied besteht darin, dass eines remote vorhanden ist und für die Remote-Zusammenarbeit verwendet werden kann, während das andere lokal existiert. Lokale und Remote-Interaktion kann durch Push/Pull erreicht werden.
  • 🎜Remote-Warehouse-Kopie, 🎜 kann als lokal vorhandener Remote-Warehouse-Cache verstanden werden. Wenn Sie git fetch verwenden, um ein Remote-Code-Repository abzurufen, entspricht dies einer lokalen Kopie des Remote-Repositorys. Sie können diese Kopie mit dem lokalen Repository zusammenführen.
🎜Wie Sie auf dem Bild sehen können, wird der Code, wenn wir git pull verwenden, um den Code abzurufen, direkt in den lokalen Zweig eingefügt, während git fetch verwendet wird </code code>Beim Abrufen von Code wird zunächst lokal eine Kopie des Remote-Warehouse generiert und dann mit <code>git merge oder git rebase in den lokalen Zweig zusammengeführt . 🎜🎜Warum sollte man sich die Mühe machen, es mehrmals zu tun, wenn man es direkt git pull kann? Stellen Sie sich ein Szenario vor, in dem Sie den Code anderer Personen zusammenführen möchten, aber nicht wissen, was diese geändert haben und ob er mit Ihrem Code zusammengeführt werden kann. Dies kann leicht über git fetch erreicht werden. git fetch wird nicht sofort mit dem lokalen Zweig zusammengeführt. Nach git fetch wird das folgende Bild angezeigt: 🎜🎜🎜🎜Das obige Bild zeigt, dass ein test2</code remote hinzugefügt wird > Zweig, es gibt eine weitere Übermittlungsinformation zum Zweig <code>test. Zu diesem Zeitpunkt können Sie einen weiteren im Verzeichnis <code>.git/refs/remotes/origin sehen .test2Zweig. 🎜🎜Verwenden Sie git log origin/test, um spezifische Einreichungsinformationen anzuzeigen🎜🎜🎜🎜Wenn Sie sehen möchten, was der eingereichte Inhalt ist, können Sie nur einen neuen Zweig erstellen, 🎜
# 拉取main分支代码
git fetch origin main
# 合并到dev
git rebase origin/main
Nach dem Login kopieren
Nach dem Login kopieren
🎜Jetzt, wo ich darüber gesprochen habe, glaube ich Ihnen bereits verstehengit Was ist der Unterschied zwischen pull und git fetch? Zusammenfassend: 🎜
  • 🎜Git Fetch ist sicherer und benutzerfreundlicher🎜
  • 🎜Git Pull ist aggressiver und destruktiver🎜
🎜General Leader Beim Verwalten In Projekten verwende ich normalerweise git fetch, um zu überprüfen, welche Zweige kürzlich hinzugefügt und welche Änderungen vorgenommen wurden, um das Projekt besser steuern zu können. 🎜

🎜merge oder rebase🎜🎜🎜Für die oben genannten Zusammenführungsvorgänge führen wir im Allgemeinen einen bestimmten Zweig direkt über den Zweig git merge <branch name> zusammen Code. Schauen wir uns zunächst das Problem bei der direkten Verwendung von git merge an. Es gibt eine sehr unangenehme Merge branch-Meldung, wie in der folgenden Abbildung dargestellt: 🎜🎜🎜🎜Das folgende Bild ist ein Flussdiagramm nach der Fusion. Wann Wir Der main-Zweig ruft einen dev für die Entwicklung ab. Zu diesem Zeitpunkt verfügen beide Zweige über Übermittlungsdatensätze. Wenn wir zusammenführen, sollte die normale Situation darin bestehen, direkt auf der Grundlage von zusammenzuführen main. Anstatt eine weitere C7-Übermittlungsinformation hinzuzufügen, nämlich den oben erwähnten Merge-Zweig, ist dies offensichtlich ein sehr unvernünftiges Phänomen (natürlich hat dies keine Auswirkungen auf die Git-Arbeit). normalerweise). 🎜🎜🎜🎜So lösen Sie das Problem Welche Probleme verursacht das Phänomen? Die Antwort lautet git rebase, allgemein bekannt als Rebase. 🎜

下面我们先来看看变基以后git分支是什么样的了

可以看到,当dev分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。

示例操作

上面讲了这么多,现在让我们来实际操作一下。

场景:远程有一个main分支上有内容更新,现在我们需要把更新的内容合并到本地dev分支上,然后push到远程dev分支,当前分支实在dev分支。

简单实现(就是很朴实无华):

# 拉取main分支代码
git fetch origin main
# 合并到dev
git rebase origin/main
Nach dem Login kopieren
Nach dem Login kopieren

上面的git rebase还有个快捷的操作,直接一行命令搞定

# 拉取test分支代码合并到dev
git pull --rebase origin test
Nach dem Login kopieren

如果你不想每次都添加rebase,可以在终端中输入下面的命令:

git config --global pull.rebase true
Nach dem Login kopieren

这个配置就是告诉git在每次pull前先进行rebase操作

其他命令参考

# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 查看所有分支
git branch -a

# 拉取所有远程分支代码
git fetch 
# 拉取origin源上所有分支代码
git fetch origin
# 拉取orign源上main分支代码
git fetch origin main

# 拉取远程分支到新建的一个本地分支并
git checkout -b newBrach origin/master
# 合并远程分支到本地
git pull --rebase origin master

# 查看提交日志
git log --oneline
# 查看某个人提交的日志
git log --author=xiumubai --oneline
# 查看某个文件提交的记录
git blame README.md
# 查看某次提交的内容
git show <commitid>
# 查看最近几次的提交

git log -p -n
Nach dem Login kopieren

(学习视频分享:编程基础视频

Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie Sie Code in Gitlab elegant abrufen und zusammenführen können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So löschen Sie ein Repository von Git So löschen Sie ein Repository von Git Apr 17, 2025 pm 04:03 PM

Befolgen Sie die folgenden Schritte, um ein Git -Repository zu löschen: Bestätigen Sie das Repository, das Sie löschen möchten. Lokale Löschen des Repositorys: Verwenden Sie den Befehl rm -RF, um seinen Ordner zu löschen. Löschen Sie ein Lager aus der Ferne: Navigieren Sie zu den Lagereinstellungen, suchen Sie die Option "Lager löschen" und bestätigen Sie den Betrieb.

Wie man Git Commit benutzt Wie man Git Commit benutzt Apr 17, 2025 pm 03:57 PM

Git Commit ist ein Befehl, mit dem Dateien Änderungen an einem Git -Repository aufgezeichnet werden, um einen Momentaufnahme des aktuellen Status des Projekts zu speichern. So verwenden Sie dies wie folgt: Fügen Sie Änderungen in den temporären Speicherbereich hinzu, schreiben Sie eine prägnante und informative Einreichungsnachricht, um die Einreichungsnachricht zu speichern und zu beenden, um die Einreichung optional abzuschließen: Fügen Sie eine Signatur für die Einreichungs -Git -Protokoll zum Anzeigen des Einreichungsinhalts hinzu.

So stellen Sie eine Verbindung zum öffentlichen Netzwerk von Git Server her So stellen Sie eine Verbindung zum öffentlichen Netzwerk von Git Server her Apr 17, 2025 pm 02:27 PM

Das Verbinden eines Git -Servers mit dem öffentlichen Netzwerk enthält fünf Schritte: 1. Einrichten der öffentlichen IP -Adresse; 2. Öffnen Sie den Firewall -Port (22, 9418, 80/443); 3. Konfigurieren Sie den SSH -Zugriff (Generieren Sie Schlüsselpaare, erstellen Benutzer). 4. Konfigurieren Sie HTTP/HTTPS -Zugriff (installieren Server, Konfigurieren Sie Berechtigungen); 5. Testen Sie die Verbindung (mit SSH -Client- oder Git -Befehlen).

Wie man ssh nach Git erkennt Wie man ssh nach Git erkennt Apr 17, 2025 pm 02:33 PM

Um SSH durch Git zu erkennen, müssen Sie die folgenden Schritte ausführen: Generieren Sie ein SSH -Schlüsselpaar. Fügen Sie den öffentlichen Schlüssel zum Git -Server hinzu. Konfigurieren Sie Git so, dass sie SSH verwenden. Testen Sie die SSH -Verbindung. Lösen Sie mögliche Probleme gemäß den tatsächlichen Bedingungen.

So laden Sie GIT -Projekte auf lokale Herd herunter So laden Sie GIT -Projekte auf lokale Herd herunter Apr 17, 2025 pm 04:36 PM

Um Projekte lokal über Git herunterzuladen, befolgen Sie die folgenden Schritte: Installieren Sie Git. Navigieren Sie zum Projektverzeichnis. Klonen des Remote-Repositorys mit dem folgenden Befehl: Git Clone https://github.com/username/repository-name.git.git

Was tun, wenn der Git -Download nicht aktiv ist Was tun, wenn der Git -Download nicht aktiv ist Apr 17, 2025 pm 04:54 PM

Auflösung: Wenn die Git -Download -Geschwindigkeit langsam ist, können Sie die folgenden Schritte ausführen: Überprüfen Sie die Netzwerkverbindung und versuchen Sie, die Verbindungsmethode zu wechseln. Optimieren Sie die GIT-Konfiguration: Erhöhen Sie die Post-Puffer-Größe (GIT-Konfiguration --global http.postbuffer 524288000) und verringern Sie die Niedriggeschwindigkeitsbegrenzung (GIT-Konfiguration --global http.lowSpeedLimit 1000). Verwenden Sie einen GIT-Proxy (wie Git-Proxy oder Git-LFS-Proxy). Versuchen Sie, einen anderen Git -Client (z. B. Sourcetree oder Github Desktop) zu verwenden. Überprüfen Sie den Brandschutz

Wie löste ich das effiziente Suchproblem in PHP -Projekten? Typense hilft Ihnen, es zu erreichen! Wie löste ich das effiziente Suchproblem in PHP -Projekten? Typense hilft Ihnen, es zu erreichen! Apr 17, 2025 pm 08:15 PM

Bei der Entwicklung einer E-Commerce-Website habe ich auf ein schwieriges Problem gestoßen: Wie kann ich effiziente Suchfunktionen in großen Mengen an Produktdaten erzielen? Herkömmliche Datenbanksuche sind ineffizient und haben eine schlechte Benutzererfahrung. Nach einigen Nachforschungen entdeckte ich den Suchmaschinen-Artensense und löste dieses Problem durch seine offizielle PHP-Client-Artense-/Artense-Php, die die Suchleistung erheblich verbesserte.

Wie man nach der GIT -Einreichung zurückkehrt Wie man nach der GIT -Einreichung zurückkehrt Apr 17, 2025 pm 01:06 PM

Um ein Git -Commit zurückzufallen, können Sie den Befehl git reset -harter Head ~ n verwenden, wobei N die Anzahl der Commits zu Fallback darstellt. Zu den detaillierten Schritten gehören: Bestimmen Sie die Anzahl der zu rolvierten Commits. Verwenden Sie die Option -HART, um einen Fallback zu erzwingen. Führen Sie den Befehl aus, um auf das angegebene Commit zurückzufallen.

See all articles