Heim > Entwicklungswerkzeuge > Idiot > Detaillierte Einführung in die Verwendung von Git

Detaillierte Einführung in die Verwendung von Git

coldplay.xixi
Freigeben: 2021-04-28 17:08:56
nach vorne
3424 Leute haben es durchsucht

Detaillierte Einführung in die Verwendung von Git

1、Git概念

1.1. Git库中由三部

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目

1) 工作目录:用户本地的

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次

推荐(免费):git

1.2. 使用Git时的

1.2.1. Git初始

1) 配置使用git仓库的人

git config --global user.name "Your Name Comes He

2) 配置使用git仓库的人员em

git config --global user.email you@yourdomain.example.

1.2.2. Git文档忽

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则

echo “zh” > .gitign

git ad

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitign

1.3. Git与Repo

Git操作一般对应一个仓库,而Repo操作一般对应一个项目,即一个项目会由若干仓库

例如,在操作整个Recket项目时使用Repo,而操作其中的某个仓库时使用Git。在包含隐藏目录.git的目录下执行git

2. Gi

Git help 获取git基

(如果要知道某个特定命令的使用方法,例如:使用Git help clone,来获取git clone的使用

3. Git本地

3.1. Git i

或者使用git init-

创建一个空的Git库。在当前目录中产生一个.git 的子目录。以后,所有的文件变化信息都会保存到这个目录下,而不像CVS那样,会在每个目录和子目录下都创建一个CVS

在.git目录下有一个config文件,可以修改其中的配置

3.2. Git 

将当前工作目录中更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的

可以递归添加,即如果后面跟的是一个目录作为参数,则会递归添加整个目录中的所有子目录和文件。

git add dir1 ( 添加dir1这个目录,目录下的所有文件都被加

Git add f1 f2 ( 添加f1,f2

git add . ( 添加当前目录下的所有文件和子目

3.3. Git

从当前的工作目录中和索引中删除

可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件。

git rm –r * (Geben Sie ein Verzeichnis ein und führen Sie diese Anweisung aus, um alle Dateien und Untertitel im Verzeichnis zu löschen.

git rm f1 (Löschen Sie die Datei f1, einschließlich dieser Datei im lokalen Verzeichnis und Index.

git rm - -ached f1 (Löschen Sie die Datei f1. Die lokale Verzeichnisdatei wird nicht gelöscht, sondern nur der Dateieintrag im Index. Die von Git hinzugefügte Datei wird in den Cache entfernt, sodass die Datei beim Festschreiben nicht übermittelt wird. geeignet, um alles auf einmal hinzuzufügen. Es gibt viele Dateien, aber Sie möchten einige davon ausschließen Um die Kommentare in der Befehlszeile wie folgt einzugeben: git commit -m „Erstes Commit des Gittutor-Repositorys“ Beachten Sie, dass der Git-Commit-Kommentar im Gegensatz zu CVS nicht leer sein darf, sonst wird er übermittelt

Git-Commit hat auch a -a Parameter, mit dem diejenigen gelöscht werden können, die nicht übergeben wurden. Änderungen in der Git-Add-Identifikation werden zwangsweise zusammen übermittelt. Es wird jedoch nicht empfohlen, diese Methode zu verwenden

Jedes Mal, wenn eine Übermittlung vorgenommen wird, erstellt Git eine Eindeutiger Commit-Identifikationscode für den globalen Code. Der Benutzer kann ihn über den Befehl „git commit –-amend –m“ bei jeder Übermittlung wiederherstellen Sie können feststellen, welche Dateien sich geändert haben und welche noch nicht zur Git-Bibliothek hinzugefügt wurden. Es wird empfohlen, die Bibliothek vor jedem Commit zu bestätigen Rufen Sie den Commit-Vorgang auf, ohne git add aufzurufen, um der Git-Bibliothek mitzuteilen, dass sich die Datei geändert hat. Wenn der Entwickler zu diesem Zeitpunkt der Meinung ist, dass die Datei übermittelt wurde, ändert er sie weiter oder sogar Wenn Sie die Datei löschen, wird der geänderte Inhalt nicht nach Version verwaltet. Sie können diesen Fehler finden, indem Sie den Status überprüfen Dateien mit der Meldung „Geändert, aber nicht aktualisiert:“ Diese Dateien wurden im Vergleich zum letzten Commit nicht identifiziert.

3.6 Sehen Sie sich das Verlaufsprotokoll an, einschließlich jeder Versionsänderung Änderung entspricht einem Commit

Git log

-1 bedeutet, dass nur ein Commit angezeigt wird. Wenn Sie 5 anzeigen möchten, wird nur -5 angezeigt. Wenn nicht angegeben, geht git log vom Commit zurück

Git log –. stat –summary (zeigt die Details jeder Version an

In den Projektprotokollinformationen jedes Protokoll Die erste Zeile (diese Zeichenfolge) ist der Name für die Übermittlung des Versionsupdates. Wir können diesen Namen als Projektversionsnummer verstehen. Die Projektversionsnummer sollte eindeutig sein und wird standardmäßig automatisch von Git generiert, um eine bestimmte Aktualisierung des Projekts anzuzeigen. Wenn wir die Projektversionsnummer als Parameter des Befehls git-show verwenden, können wir die Aktualisierungsdetails der Projektversion anzeigen.

1) Git

2) Git

Eigentlich passt der obige Befehl die Versionsnummer nicht wirklich an, sondern erstellt nur ein Tag-Objekt, das nützlich ist, wenn die Projektversion für die Außenwelt freigegeben wird

3.7

Führen Sie den vom Server heruntergeladenen Code mit dem lokalen Code zusammen. Oder Zweig

Zum Beispiel: Wenn Sie sich derzeit im Master-Zweig befinden und den Zweig-Dev mit dem Master zusammenführen möchten, dann git merge

Hinweis: git merge nov/eclair_eocket (dient zum Zusammenführen des eclair_eocket-Zweigs der Server-Git-Bibliothek in der lokale Zweig

git rebase nov/eclair_eocket (ordnet den eclair_eocket-Zweig der Server-Git-Bibliothek einem lokalen temporären Zweig zu, führt dann die Änderungen am lokalen Zweig in diesem temporären Zweig zusammen und verwendet dann diesen temporären Zweig, um den lokalen Zweig zu initialisieren

3.8. Git d

Vergleichen Sie den lokalen Code mit dem Code im Index oder vergleichen Sie den Code im Index mit dem Code im lokalen Warehouse

1) Git d

Vergleichen Sie das Arbeitsverzeichnis mit dem Code im Index

2) Git diff - - cac

Vergleichen Sie den Index mit dem lokalen Repository

3.9. Git check

3.9.1. Wechseln

1) Erstellen Sie einen neuen Zweig und wechseln Sie zum

Git checkout –b new

2) Wechseln Sie zu einem etablierten lokalen Zweig local_bra

Git checkout local_bra

(Nach der Verwendung von cat .git/HEAD wird refs:refs/heads/ local_bran angezeigt

3) Wechseln Sie zu einem Zweig auf dem Server remote_bra

Git checkout remote_bra

(Remote-Zweig remote_branch kann über git branch –r

4 in einen Commit umgewandelt werden) Git checkout commit

(nach Verwendung von cat .git/HEAD, commit_

5) wird angezeigt Gehe zu einem bestimmten

Git-Checkout

(nach der Verwendung von cat .git/HEAD wird t angezeigt


Hinweis: Mit Ausnahme von 1) und 2) werden die anderen drei nur in einen temporären Zustand (keine Verzweigung) versetzt (dieser Kopf ist Zu diesem Zeitpunkt können Sie den Git-Zweig verwenden, um zu sehen, dass er aktiviert ist (kein Zweig Cat.git/HEAD kann sehen, dass er auf die entsprechende Commit-ID zeigt). Diese (keine Niederlassung) existiert nur vorübergehend und ist keine wirklich etablierte Niederlassung. Wenn 2) zu diesem Zeitpunkt ausgeführt wird, verschwindet dieser (kein Zweig) automatisch. Wenn 1) ausgeführt wird, wird ein neuer Zweig erstellt und dieser (kein Zweig) wird zu diesem Zeitpunkt an diesen neuen Zweig angehängt , cat .git/ refs/heads/new_branch Sie können sehen, dass es gerade auf den Commit hingewiesen hat


3.9.2. Initialisieren Sie mit einem vorhandenen Zweig


Führen Sie den folgenden Befehl aus und wechseln Sie zu einem etablierter lokaler Zweig oder ein bestimmter Erstellen Sie gleichzeitig mit einem Remote-Zweig oder einer bestimmten Commit-ID oder einem bestimmten Tag einen neuen Zweig new_branch und hängen Sie ihn an diesen neuen Zweig


1) Wechseln Sie zu einem bereits etablierten lokalen Zweig Verzweigen Sie local_branch und verwenden Sie diesen Zweig, um einen neuen Zweig new_bran zu initialisieren. Git checkout –b new_branch local_bra. 2) Wechseln Sie zu einem entfernten Zweig remote_branch und verwenden Sie diesen Zweig, um einen neuen Zweig new_bran zu initialisieren

Git Checkout –B NEW_BRANCH Remote_BRA


3) Wechseln Sie zu einer bestimmten Befehls -ID und erstellen Markieren und erstellen Sie einen neuen Zweig new_bra


Git checkout –b new_branch


3.9.3. Beispielsweise aktualisiert „git checkout app/model/user.rb“ die Datei user.rb der letzten Festgeschriebene Version Kommen Sie zurück, alle Inhalte im nicht festgeschriebenen Arbeitsverzeichnis sind



3.10 Git-ls

Sehen Sie sich an, was sich in der aktuellen Git-Bibliothek befindet

3 .11 . Git

Eine Datei, ein Verzeichnis oder

umbenennen

FOR BEIL: Git MV HelloWorld.c HelloWorld1.c (benennen Die Kosten für Zweige liegen bei nahezu Null, Sie müssen also nicht mit der Erstellung einiger weiterer Zweige geizen. Wenn Sie git init zum ersten Mal ausführen, erstellt das System einen Zweig mit dem Namen „master“, während andere Zweige manuell erstellt werden . Hier sind einige gängige Zweige


Erstellen Sie Ihren eigenen persönlichen Arbeitszweig, um zu viele Eingriffe in den Hauptzweigmaster zu vermeiden und die Kommunikation mit anderen zu erleichtern


Bei risikoreichen Arbeiten oder bei der Erstellung eines Experiments


Um die Arbeit anderer Leute zusammenzuführen, erstellen Sie am besten einen temporären Zweig zum Zusammenführen. Nachdem die Zusammenführung abgeschlossen ist, „holen“ Sie ihn in Ihren eigenen


, um den Zweig hinzuzufügen und zu löschen, zu überprüfen usw.


Hinweis: Zweiginformationen befinden sich im Allgemeinen im Verzeichnis .git/refs/, wobei das Heads-Verzeichnis der lokale Zweig, remotes der Zweig auf dem entsprechenden Server und die Tags


3.12.2 sind. Überprüfen Sie


git branch listet alle Zweige in der lokalen Git-Bibliothek auf. Wenn unter den aufgelisteten Zweigen ein * vor dem Zweignamen steht, bedeutet dies, dass dieser Zweig der aktuelle ist.


git branch –r listet den auf Server-Git-Bibliothek. Alle


(Sie können weiterhin den Befehl „git checkout -b local branch name server branch name“ verwenden, um den Codetext eines bestimmten Zweigs auf dem Server abzurufen


3.12.3 . Der funktionierende Zweig wird nicht auf den neu erstellten Zweig umgestellt. Daher müssen Sie auch den Befehl „git checkout branch name“ eingeben, um


2) git checkout -b


nicht nur einen Zweig zu erstellen, sondern auch zu wechseln der aktuell funktionierende Zweig zu diesem Zweig


3.12 .5. Wechseln Sie zu einem Zweig: git checkout


Wechseln Sie zum Hauptzweig: git checkout mas


3.12.6. Löschen


git branch –D


Hinweis: Nach dem Löschen können alle Änderungen, die am Zweig vorgenommen wurden, nicht wiederhergestellt werden. Löschen erzwingen


3.12.7. Dateien in zwei Zweigen vergleichen


git diff Master-Zweigname (Vergleichen Sie den Hauptzweig und den eines anderen Zweigs


3.12.8. Punkte anzeigen


git-show-branch (Sehen Sie sich die Commit-Kommentare des aktuellen Zweigs an und


git-show-branch -all (Commit-Kommentare und Informationen aller Zweige anzeigen)


* [dev]


[master]



* [dev]


* [dev^]


* [dev~2]


*+ [master]


Im obigen Beispiel zeigen die beiden Zeilen über „--“ an, dass dort Es gibt zwei Zweige, Dev und Master, und das letzte im Dev-Zweig übermittelte Protokoll ist „d2“ und das letzte im Master-Zweig übermittelte Protokoll ist „m2“. Die Zeilen unter „--“ stellen den Verlauf der Zweigentwicklung dar, wobei dev für den letzten Commit steht, der im Dev-Zweig stattgefunden hat, und dev^ für den vorletzten Commit, der im Dev-Zweig stattgefunden hat. dev~2 bedeutet das drittletzte Vorkommen im Entwicklungszweig. 3.12.9. Sehen Sie sich die Vorgänge des aktuellen Zweigs an. Git Whatchan


git merge „Kommentare“ Der zusammengeführte Zielzweig wird zusammengeführt


git merge HEAD dev~2 (merge master branch and dev~2 branch) oder: git merge master de



git pull Der zusammengeführte Zielzweig wird zusammengeführt


Für Beispiel: git checkout master (zu Master wechseln


git pull . dev~2 (den aktuellen Zweig und dev~2 zusammenführen


3.13). Git reb


wird im Allgemeinen beim Zusammenführen verwendet Aktueller Inhalt des Servers zum lokalen Beispiel: In Version C wird der Inhalt vom Server zum lokalen Server abgerufen und der lokale Inhalt wird geändert. Zu diesem Zeitpunkt möchte ich den lokal geänderten Inhalt an den Server senden. aber ich stelle fest, dass sich die Version auf dem Server in G geändert hat. Zu diesem Zeitpunkt muss ich zuerst Git-Rebase ausführen, um die neueste Version auf dem Server mit der lokalen zusammenzuführen


Mit den folgenden beiden wird es klarer Bilder: Nachdem der Rebase-Befehl ausgeführt wurde, wird der Verzweigungspunkt tatsächlich von C nach G verschoben, sodass auch die Verzweigung von C nach G verschoben wird. Beispielsweise klonen wir eine Codebasis Von einem Remote-Standort aus und bereiten Sie es für die Übermittlung an den Remote-Standort vor. Während der Entwicklung verfügt die lokale Codebasis jedoch über funktionale Commits und Commits für Sicherungszwecke. Kurz gesagt, es gibt viele nutzlose Protokolle im Protokoll Ich möchte diese Protokolle nicht an die Bibliothek senden, wenn sie an die Fernbedienung zurückgegeben werden. Daher müssen wir Git Res verwenden. Das Konzept von Git Reset ist relativ kompliziert: Git Reset [--mixed | -soft |. --hard] [


command's

--mixed Dies ist die Standardoption. Zum Beispiel git reset [--mixed] dev^ (die Definition von dev^ finden Sie in 2.6.5). Seine Funktion besteht lediglich darin, den Zweigstatus auf dev1^ zurückzusetzen, ändert jedoch nicht den Inhalt von Arbeitsdateien. Das heißt, alle Dateiänderungen von dev1^ zu dev1 bleiben erhalten, aber alle Festschreibungsprotokolle zwischen dev1^ und dev1 werden gelöscht und der geänderte Dateiinhalt wird von git add nicht identifiziert. Wenn Sie erneut festschreiben möchten, müssen Sie dies auch tun Fügen Sie die geänderten Dateien mit einem Git hinzu. Auf diese Weise erhalten Sie nach dem Festschreiben einen sehr sauberen Festschreibungsdatensatz. (Das Zurücksetzen von


--soft entspricht dem Ausführen von git reset –mixed und dem anschließenden Ausführen von git add für die geänderten Dateien. Wenn Sie diese Option verwenden, können Sie direkt einen Commit ausführen. (Ein Zurücksetzen von


--ein harter Befehl im Warehouse führt zum Zurücksetzen aller Informationen, einschließlich des Dateiinhalts. Er wird im Allgemeinen nur beim Zurücksetzen aufgegebenen Codes verwendet. Nach der Ausführung kann der Dateiinhalt nicht wiederhergestellt werden


Im Arbeitsverzeichnis, Index und Warehouse wurde auf die verwendeten Punkte umgestellt.


git reset HEAD^ hat den ersten zurückgesetzt.


git reset HEAD~2 Zurück zum zweiten

Wenn Sie die Dateien im Arbeitsverzeichnis zurücksetzen möchten, verwenden Sie git reset - - hard HEAD^ Gehen Sie zurück zum ersten

git reset - - hard HEAD ~2 Führen Sie einen Rollback zum zweiten durch

Sie können auch Folgendes verwenden

, um das aktuelle Arbeitsverzeichnis vollständig auf die angegebene Versionsnummer zurückzusetzen. Gehen Sie davon aus, dass wir, wie unten gezeigt, fünf Versionen von A bis G übermittelt haben, darunter die Version C Die Nummer ist bbaf6fb5060b4875b18ff9ff637ce118256d6f20. Wir haben „git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20“ ausgeführt

3.15. Git r


Eine bestimmte Version wiederherstellen, zum Beispiel: git revert commit_id (wobei commit_id ein eindeutiges Wort ist, das beim Festschreiben des Codes generiert wird



Zum Beispiel: (in 3.6) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (Führen Sie diesen Vorgang aus, das letzte Commit wird wiederhergestellt)


3.16. Git con


Verwenden Sie diesen Befehl, um verschiedene Einstellungen von Git hinzuzufügen und zu ändern. Beispielsweise setzt „git config branch.master.remote origin“ die Remote-Versionsbibliothek des Masters auf einen Alias ​​namens „Origin-Version“

3.17 s


Objektunterschiede anzeigen


3.18.


Ja Markieren Sie eine bestimmte Version, damit Sie sich keine komplexe Versionsnummer-Hashwertzeichenfolge merken müssen bbaf6fb5060b4875b18ff9ff637ce118256d6f20“, um die von Ihnen wiederhergestellte Version zu markieren, damit Sie sie später überprüfen können. Bei der Versionierung können Sie den Tag-Namen „revert_version“ anstelle von Hash verwenden


4.1. Git cl


Entfernen Sie den Code des Server-Warehouses in das lokal erstellte Verzeichnis (nachdem Sie die Remote-Git-Bibliothek über Git-Klonen mit dem Server erhalten haben


, die Entwicklerinformationen in .git/config werden nicht zusammen geklont. Sie müssen noch Entwicklerinformationen zur .git/config-Datei der lokalen Bibliothek hinzufügen. Darüber hinaus müssen Entwickler diese auch selbst hinzufügen. Die über Git-Klon erhaltene Remote-Git-Bibliothek enthält nur die aktuelle Version Die Remote-Git-Bibliothek. Wenn Sie andere Branch-Informationen erhalten möchten, müssen Sie „git branch -r“ verwenden, um sie anzuzeigen. Wenn Sie andere Remote-Branch-Codes benötigen, können Sie den Befehl „git checkout –“ verwenden. b Name des lokalen Zweigs Name des entfernten Zweigs“, wobei der Name des entfernten Zweigs „git branch -r“ ist. Der aufgeführte Zweigname lautet normalerweise etwa „Ursprung/Zweigname“. Wenn der Name des lokalen Zweigs bereits vorhanden ist, „-b“ wird nicht benötigt und herunterladen Der neueste Code vom Server, der entspricht: Git fetch + Git mer


aktualisiert den Code auf den lokalen Code aus anderen Repositorys (entweder remote oder lokal). Zum Beispiel: „git pull origin master“ aktualisiert den Code des Ursprungs-Repositorys zum lokalen Master-Master


git pull kann den Inhalt eines Zweigs von jedem Git-Repository abrufen. Verwendung: git pull username@ipaddr: Name des Remote-Repositorys Name des Remote-Zweigs lokal Branch-Name. Rufen Sie den Remote-Branch-Namen aus der Remote-Git-Bibliothek in einen lokalen Branch der lokalen Git-Bibliothek ab. Wenn Sie den lokalen Branch-Namen nicht schreiben, wird dieser standardmäßig in den lokalen Branch übernommen Git Pull ist auch zum Zusammenführen von Zweigen möglich. Wenn Ihr lokaler Zweig bereits Inhalte enthält, führt Git Pull diese Dateien zusammen






4


Aktualisieren Sie den lokalen Commit-Code im Remote-Repository, z. B. „git push origin“. Code wird aktualisiert auf Die Remote-Version namens orgin


git push und git pull sind genau das Gegenteil, sie dienen dazu, den Inhalt eines lokalen Zweigs an einen Remote-Zweig zu übermitteln. Verwendung: git pushusername@: Name des Remote-Repositorys, Name des lokalen Zweigs , Name des Remote-Zweigs. Dieser Befehl verschiebt einen lokalen Zweig der lokalen Git-Bibliothek in einen Remote-Zweig der Remote-Git-Bibliothek


Es ist zu beachten, dass Git Push Dateien anscheinend nicht automatisch zusammenführt. Wenn daher während des Git-Push ein Konflikt auftritt, wird dieser ohne Aufforderung zwangsweise durch den Inhalt der später übertragenen Datei überschrieben. Dies ist sehr gefährlich bei der gemeinsamen Entwicklung






4.4. Git


Laden Sie den Code aus dem Repository des Servers herunter. (Die Interaktion mit dem Server und das Herunterladen der neuesten


vom Server entspricht dem Abrufen der neuesten Version von der Fernbedienung auf die lokale Version. Sie wird nicht automatisch zusammengeführt und ist sicherer als Git-Pull.


Verwenden Sie dies Methode, um das

auf dem Server abzurufen

Zum Beispiel: Wenn Sie git checkout nov/eclair_rocket verwenden (nov/eclair_rocket ist der Filialname auf dem Server), erhalten Sie den Code, der vom Server heruntergeladen wurde, als Sie das letzte Mal verwendet haben git fetch-Befehl; wenn Sie zuerst git fetch verwenden, dann verwenden Sie git Checkout nov/eclair_rocket, holen Sie sich zuerst die neuesten Update-Informationen vom Server und laden Sie dann den neuesten Code herunter.




:. . :. ) l:. . )e gegenseitig). . G. w. g))t本:Record Record Record Record;:))):]. t. :e)) Zweig: 2). Zweig: Zweig-D-Datensatz. 2012-22:) Geschichte) Abschied. Name Zweig r Name. Name, Name Zweig D auf. . . Zweig. . . ;;:. Beschrieben h). v. es. codeghdhh. H. . Zweig. )gg)dd)hh)hh Name hat oberen Zweig t. D. F. f))v. e. wg:). 1. G. . S). . . . T))):. M))):. D. . . t-Befehl) order lp. . Vergleiche e.e:. Make ml" Namenseinstellungselement ...;. Werden...) h:.




:...:.) l:...)e gegenseitig )... g)) t datensatz ;:)): v. . . ;. werden. . . ) h:.




:. . :. ) l:. . )e gegenseitig). . G. w. g))t本:Record Record Record Record;:))):]. t. :e)) Zweig: 2). Zweig: Zweig-D-Datensatz. 2012-22:) Geschichte) Abschied. Name Zweig r Name. Name, Name Zweig D auf. . . Zweig. . . ;;:. Beschrieben h). v. es. codeghdhh. H. . Zweig. )gg)dd)hh)hh Name hat oberen Zweig t. D. F. f))v. e. wg:). 1. G. . S). . . . T))):. M))):. D. . . t-Befehl) order lp. . Vergleiche e.e:. Make ml" Namenseinstellungselement ...;. Werden...) h:.




:...:.) l:...)e gegenseitig )... g)) t :. . ;. werden. . . ) h:.




:. . :. ) l:. . )e gegenseitig). . G. w. g))t本:Record Record Record Record;:))):]. t. :e)) Zweig: 2). Zweig: Zweig-D-Datensatz. 2012-22:) Geschichte) Abschied. Name Zweig r Name. Name, Name Zweig D auf. . . Zweig. . . ;;:. Beschrieben h). v. es. codeghdhh. H. . Zweig. )gg)dd)hh)hh Name hat oberen Zweig t. D. F. f))v. e. wg:). 1. G. . S). . . . T))):. M))):. D. . . t-Befehl) order lp. . Vergleiche e.e:. Make ml“ Namenseinstellungselement ...;. werde...) h:




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成Git

1.1. Git库中由三部分组

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内

1) 工作目录:用户本地的目录

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新


1.2. 使用Git时的初始化事

1.2.1. Git初始化配

1) 配置使用git仓库的人员姓

git config --global user.name "Your Name Comes Here

2) 配置使用git仓库的人员emai

git config --global user.email you@yourdomain.example.co

1.2.2. Git文档忽略机

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行

echo “zh” > .gitignor

git add 

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignor

1.3. Das Verhältnis zwischen Git und Repo

Git-Vorgänge entsprechen im Allgemeinen einem Lager, während Repo-Vorgänge im Allgemeinen einem Projekt entsprechen, d Das gesamte Recket-Projekt wird verwendet, und Repo wird verwendet, wenn das gesamte Recket-Projekt betrieben wird. Verwenden Sie Git, wenn Sie mit einem bestimmten Repository arbeiten. Führen Sie Git-Operationen in dem Verzeichnis aus, das das versteckte Verzeichnis .git enthält clone, um die Verwendung von git clone


3 zu erhalten In Zukunft werden alle Dateiänderungsinformationen in diesem Verzeichnis gespeichert, im Gegensatz zu CVS, das in jedem Verzeichnis und Unterverzeichnis ein CVS-Verzeichnis erstellt. Im .git-Verzeichnis gibt es eine Konfigurationsdatei, die geändert werden kann 3.2. Git ad

fügt die geänderten oder neu hinzugefügten Dateien zum Git-Index hinzu. Dies ist auch die Datei vor der Übermittlung Wenn ein Verzeichnis als Parameter folgt, werden alle Unterverzeichnisse und Dateien im gesamten Verzeichnis rekursiv hinzugefügt. Beispiel: git add dir1 (fügen Sie das Verzeichnis dir1 unter hinzu). Verzeichnis. Alle Dateien werden hinzugefügt

Git add f1 f2 (F1, f2-Dateien hinzufügen

git add . (Alle Dateien und Unterverzeichnisse im aktuellen Verzeichnis hinzufügen

3.3. Git r

Aus dem aktuellen Arbeitsverzeichnis entfernen und Dateien indizieren

kann rekursiv gelöscht werden, d. h. wenn einem Verzeichnis als Parameter gefolgt wird, werden alle Unterverzeichnisse und Dateien im gesamten Verzeichnis rekursiv gelöscht. Beispiel:

git rm –r * (Geben Sie ein Verzeichnis ein und führen Sie dies aus. Anweisung, alle Dateien und Unterverzeichnisse im Verzeichnis werden gelöscht gelöscht werden) Datei, löschen Sie nur die Dateidatensätze im Index. Entfernen Sie die Datei, die dem Cache hinzugefügt wurde, damit die Datei beim Festschreiben nicht übermittelt wird. Es eignet sich jedoch zum Hinzufügen vieler Dateien Ich möchte einige davon ausschließen.

3.4. Git Commi

Senden Sie die Änderungen an das aktuelle Arbeitsverzeichnis. Rufen Sie den Git-Commit-Befehl direkt auf und Sie werden aufgefordert, die Kommentare in der Befehlszeile einzugeben Folgendes: git commit -m „Erstes Commit von gittutor. repostory“. Beachten Sie, dass der Git-Commit-Kommentar im Gegensatz zu CVS nicht leer sein darf, da sonst die Übermittlung fehlschlägt werden von git add nicht identifiziert. Diese Methode wird jedoch nicht empfohlen. Bei jeder Übermittlung erstellt git einen eindeutigen Commit-Identifikationscode für den globalen Code. Benutzer können den Code bei jeder Übermittlung über den Befehl git reset wiederherstellen commit –-amend –m „message“ (kontinuierliche Änderung des übermittelten Inhalts auf einer Commit-ID

3.5. Git-Status

Zeigen Sie den Status des Repositorys an. Sie können erkennen, welche Dateien sich geändert haben, welche Dateien nicht zur Git-Bibliothek hinzugefügt wurden usw. Es wird empfohlen, den Bibliotheksstatus vor jedem Commit mit diesem Befehl zu bestätigen

Die häufigste Fehlbedienung besteht darin, eine Datei zu ändern und den Festschreibungsvorgang direkt aufzurufen, ohne git add aufzurufen, um die Git-Bibliothek darüber zu informieren, dass sich die Datei geändert hat, was dazu führt, dass die Datei nicht tatsächlich übermittelt wird. Wenn der Entwickler zu diesem Zeitpunkt der Meinung ist, dass die Datei übermittelt wurde, und die Datei weiterhin ändert oder sogar löscht, unterliegt der geänderte Inhalt keiner Versionsverwaltung. Wenn Sie den Git-Status jedes Mal vor dem Absenden überprüfen, können Sie diesen Fehler finden. Wenn Sie daher den Befehl git status aufrufen, müssen Sie besonders auf die Dateien achten, bei denen die Meldung „Geändert, aber nicht aktualisiert:“ angezeigt wird. Bei diesen Dateien handelt es sich um alle Dateien, die sich im Vergleich zum letzten Commit geändert haben, aber nicht von git add

3.6 identifiziert werden. Sehen Sie sich das Verlaufsprotokoll an, einschließlich jeder Versionsänderung. Jede Versionsänderung entspricht einer Commit-ID

Git-Protokoll -

-1 bedeutet, dass nur ein Commit angezeigt wird. Wenn Sie 5 anzeigen möchten, nur -5. Wenn nicht angegeben, wird das Git-Protokoll ab dem Commit angezeigt

Git log --stat –summary (zeigt die detaillierten Änderungen jeder Version an

In den Projektprotokollinformationen die erste Zeile jedes Protokolls (d. h. das Zeichenfolgenzeichen). ) ist der Name der Versionsaktualisierung. Wir können diesen Namen als Projektversionsnummer verstehen. Die Projektversionsnummer sollte eindeutig sein und von Git automatisch generiert werden. Verwenden Sie die Nummer als Parameter der Befehl git-show, um die Update-Details der Projektversion anzuzeigen, zum Beispiel

1) Git lo


2) Git sho


Tatsächlich ist der obige Befehl nicht der echte. Durch das Anpassen der Versionsnummer wird nur ein Tag-Objekt erstellt, was nützlicher ist, wenn die Projektversion für die Außenwelt freigegeben wird. 3.7 Git Merge führt den vom Server heruntergeladenen Code mit dem lokalen Code zusammen. Oder führen Sie eine Zweigzusammenführung durch

Zum Beispiel: Wenn Sie sich derzeit im Hauptzweig befinden und den Zweig dev mit dem Master zusammenführen möchten, dann git merge de

Hinweis: git merge nov/eclair_eocket (dient zum Zusammenführen des eclair_eocket-Zweigs des Server-Git Bibliothek in Auf dem lokalen Zweig

git rebase nov/eclair_eocket (ordnet den eclair_eocket-Zweig der Server-Git-Bibliothek einem lokalen temporären Zweig zu, führt dann die Änderungen im lokalen Zweig in diesem temporären Zweig zusammen und verwendet diesen temporären Zweig dann zum Initialisieren der lokale Zweig

3.8. Git diff

Vergleichen Sie den lokalen Code mit dem Code im Index oder vergleichen Sie den Code im Index mit dem Code im lokalen Warehouse

1) Git dif

Vergleichen Sie das Arbeitsverzeichnis mit dem Code im Indexcode

2) Git diff - - Cache

Vergleichen Sie den Index mit dem Code im lokalen Warehouse

3.9. Git checkou

3.9.1) Erstellen Sie einen neuen Zweig und Wechseln Sie zur Filiale

Git checkout –b neuer Zweig

2) Wechseln Sie zu einer etablierten lokalen Filiale local_branc

Git checkout local_branc

(nach Verwendung von cat .git/HEAD wird refs:refs/heads/ local_branch angezeigt

3) Wechseln Sie zu einem Zweig auf dem Server remote_branc

Git checkout remote_branc

(Der entfernte Zweig remote_branch kann über git branch –r

4 aufgelistet werden) Wechseln Sie zu einem Commit i

Git checkout commit_i

(Verwenden Sie cat .git/ Nach HEAD wird commit_id angezeigt

5) Wechseln Sie zu einem bestimmten ta

Git checkout ta

(Nach der Verwendung von cat .git/HEAD wird tag

angezeigt

Hinweis: Mit Ausnahme von 1) und 2) werden die anderen drei nur in einen temporären Zustand (kein Zweig) versetzt (dieser Kopf ist abgetrennt). Zu diesem Zeitpunkt können Sie mit git branch sehen, dass er aktiviert ist (kein Zweig). ), cat. git/HEAD sieht einen Verweis auf die entsprechende Commit-ID. Diese (keine Niederlassung) existiert nur vorübergehend und ist keine wirklich etablierte Niederlassung. Wenn 2) zu diesem Zeitpunkt ausgeführt wird, verschwindet dieser (kein Zweig) automatisch. Wenn 1) ausgeführt wird, wird ein neuer Zweig erstellt und dieser (kein Zweig) wird zu diesem Zeitpunkt an diesen neuen Zweig angehängt , cat .git/ refs/heads/new_branch kann sehen, dass es gerade auf die Commit-ID verwiesen hat

3.9.2 Initialisieren Sie den neuen Zweig mit dem vorhandenen Zweig

Führen Sie den folgenden Befehl aus und wechseln Sie dann zu einem etablierten lokalen Zweig Zweig oder ein Remote-Zweig Oder erstellen Sie einen neuen Zweig new_branch mit einer bestimmten Commit-ID oder einem bestimmten Tag und hängen Sie ihn an diesen neuen Zweig

1) Wechseln Sie zu einem bereits eingerichteten lokalen Zweig local_branch und verwenden Sie diesen Zweig, um einen neuen Zweig zu initialisieren new_branch

git checkout –b new_branch local_branc

2) Wechseln Sie zu einem bestimmten Remote-Zweig remote_branch und verwenden Sie diesen Zweig, um einen neuen Zweig zu initialisieren new_branch

Git checkout –b new_branch remote_branc

3) Wechseln Sie zu einer bestimmten Commit-ID, und erstelle einen neuen Zweig new_branc

Git checkout –b new_branch commit_i

4) Wechseln Sie zu einem Tag und erstellen Sie einen neuen Zweig new_branc

Git checkout –b new_branch ta

3.9.3 Wiederherstellungscode

Zum Beispiel „git checkout app/model/ user.rb“ aktualisiert die Datei user.rb von der zuletzt übermittelten Version zurück und alle Inhalte im nicht festgeschriebenen Arbeitsverzeichnis werden überschrieben


3.10. Git-ls-fil

Ansicht aktuell Welche Dateien gibt es in der Git-Bibliothek? 3.12. Git-Branc

3.12.1 Die Gesamtkosten für die Erstellung eines Zweigs in einem Git-Repository sind nahezu Null, sodass Sie nicht geizig sein müssen, wenn Sie git init zum ersten Mal ausführen. Das System erstellt einen Namen für „Master“.

Hier sind einige gängige Verzweigungsstrategien

Erstellen Sie Ihren eigenen persönlichen Arbeitszweig, um zu viele Eingriffe in den Hauptzweig „Master“ zu vermeiden und die Kommunikation mit anderen zu erleichtern . Kommunikation und Zusammenarbeit

Erstellen Sie bei Arbeiten mit hohem Risiko einen experimentellen Zweig.

Wenn Sie die Arbeit anderer Personen zusammenführen, erstellen Sie am besten einen temporären Zweig zum Zusammenführen und „holen“ Sie ihn nach Abschluss der Zusammenführung in Ihren eigenen Zweig

Hinzufügen, Löschen, Überprüfen und andere Vorgänge für Zweige

Hinweis: Zweiginformationen befinden sich im Allgemeinen im Verzeichnis .git/refs/, wobei das Verzeichnis „heads“ der lokale Zweig, „remotes“ der Zweig auf dem entsprechenden Server und „tags“ ist Das Tag

3.12 .2. Zweige anzeigen

git branch listet alle Zweige in der lokalen Git-Bibliothek auf. Wenn unter den aufgelisteten Zweigen ein * vor dem Zweignamen steht, bedeutet dies, dass dieser Zweig der aktuelle Zweig ist

git branch –r listet alle Zweige der Server-Git-Bibliothek auf

(Sie können weiterhin den Befehl „git checkout“ verwenden -b Name des lokalen Filialzweigs (Branchenname), um die Codedatei eines bestimmten Zweigs auf dem Server abzurufen branch

1) git branch branch

Obwohl der Branch erstellt wird, wird der aktuell funktionierende Branch nicht auf den neu erstellten Branch umgestellt. Daher ist zum Wechseln auch der Befehl „git checkout branch name“ erforderlich

2) git Kasse –b-Filiale

Es wurde nicht nur ein Zweig erstellt, sondern auch der aktuelle Arbeitszweig auf den Zweig umgestellt

3.12.5 Wechseln Sie zu einem Zweig: Git Checkout-Zweig

Wechseln Sie zum Hauptzweig: Git Checkout Master

3.12.6 branch

git branch –D branch

Hinweis: Nach dem Löschen können alle in diesem Zweig vorgenommenen Änderungen nicht wiederhergestellt werden. Diesen Zweig zwangsweise löschen

3.12.7. Vergleichen Sie die Dateien in den beiden Zweigen

git diff Master-Zweigname (vergleichen Sie den Unterschied zwischen dem Hauptzweig und einem anderen Zweig

3.12.8. Sehen Sie sich den Zweigverlauf an

git-show -branch (Zeigen Sie die Commit-Kommentare und Informationen des aktuellen Zweigs an

git-show-branch -all (Zeigen Sie die Commit-Kommentare und Informationen aller Zweige an) Zum Beispiel

* [dev] d

! [master] m

-

* [dev] d

* [dev^] d

* [dev~2] d

*+ [master] m

Im obigen Beispiel bedeuten die beiden Zeilen oben „--“. dass es zwei Zweige Dev und Master gibt und das letzte Protokoll, das im Dev-Zweig übermittelt wurde, „d2“ ist und das letzte Protokoll, das im Master-Zweig übermittelt wurde, „m2“ ist. Die Zeilen unter „--“ stellen den Verlauf der Zweigentwicklung dar , wobei dev den letzten Commit darstellt, der im Entwicklungszweig stattgefunden hat, dev^ den vorletzten Commit darstellt, der im Entwicklungszweig stattgefunden hat. dev~2 den drittletzten Commit darstellt, der im Entwicklungszweig stattgefunden hat

3.12.9. Zeigen Sie den aktuellen Zweig an. Vorgangshinweise

git whatchange

3.12.10. Punkte zusammenführen

Methode 1

git merge „Kommentare“ Zielzweig zusammenführen Quellpunkte zusammenführen

Wenn beim Zusammenführen ein Konflikt auftritt, werden Sie von Git aufgefordert

Zum Beispiel: git checkout master (wechseln Sie zum Master-Zweig

git merge HEAD dev~2 (merge master branch und dev~2 branch) oder: git merge master dev~

Methode 2

git pull merge target branch merge Quellzweig

Zum Beispiel: git checkout master (wechseln Sie zum Hauptzweig

git pull. dev~2 (führen Sie den aktuellen Zweig und den Zweig dev~2 zusammen

3.13). Git rebas

wird im Allgemeinen beim Zusammenführen verwendet Aktueller Inhalt des Servers auf den lokalen Server, zum Beispiel: In Version C wird der Inhalt vom Server auf den lokalen Server übertragen und der lokale Inhalt wird geändert. Zu diesem Zeitpunkt möchte ich den lokal geänderten Inhalt an den Server senden. Ich habe jedoch festgestellt, dass sich die Version auf dem Server in G geändert hat. Zu diesem Zeitpunkt muss ich zuerst die neueste Version auf dem Server mit der lokalen Version zusammenführen. Dies wird beispielsweise anhand der folgenden beiden klarer erläutert Bilder Nachdem der Rebase-Befehl ausgeführt wurde, wird der Verzweigungspunkt tatsächlich von C nach G verschoben, sodass die Verzweigung von C nach G erfolgt. Die Umkehrung und Wiederherstellung der Git-Rese-Bibliothek ist Wird nicht nur zum Zurücksetzen einiger aufgegebener F&E-Codes verwendet, sondern hat auch eine wichtige Funktion. Nach der lokalen Entwicklung klonen wir die erneute Übermittlung an Remote. Wenn jedoch die lokale Codebasis entwickelt wird, gibt es funktionale Commits, Commits für Sicherungszwecke usw. Kurz gesagt, das Festschreibungsprotokoll enthält viele nutzlose Protokolle, und wir möchten diese Protokolle nicht an die Bibliothek senden, wenn sie an die Fernbedienung zurückgesendet werden. Daher müssen Sie Git Reset verwenden. Das Konzept von Git Reset ist relativ kompliziert. Seine Befehlsform: git reset [--mixed |. --soft | --hard] [

Optionen des Befehls

--mixed Dies ist die Standardoption. Zum Beispiel git reset [--mixed] dev^ (die Definition von dev^ finden Sie in 2.6.5). Seine Funktion besteht lediglich darin, den Zweigstatus auf dev1^ zurückzusetzen, ändert jedoch nicht den Inhalt von Arbeitsdateien. Das heißt, alle Dateiänderungen von dev1^ zu dev1 bleiben erhalten, aber alle Festschreibungsprotokolle zwischen dev1^ und dev1 werden gelöscht und der geänderte Dateiinhalt wird von git add nicht identifiziert. Wenn Sie erneut festschreiben möchten, müssen Sie dies auch tun Fügen Sie die geänderten Dateien mit einem Git hinzu. Auf diese Weise erhalten Sie nach dem Festschreiben einen sehr sauberen Festschreibungsdatensatz. (Das Zurücksetzen des Inhalts des Index und des Warehouse

--soft entspricht dem Ausführen von „git reset –mixed“ und dem anschließenden Ausführen von „git add“ für die geänderten Dateien. Wenn Sie diese Option verwenden, können Sie direkt einen Commit durchführen. (Antwort: Zurückziehen des Inhalts des Warehouse

--hard führt dazu, dass alle Informationen zurückgesetzt werden, einschließlich des Dateiinhalts. Wird im Allgemeinen nur beim Zurücksetzen aufgegebenen Codes verwendet. Nach der Ausführung kann der Dateiinhalt nicht wiederhergestellt werden und Warehouse werden zurückgesetzt

Zum Beispiel

Wechseln Sie zum verwendeten Zweig

git reset HEAD^ Rollback der ersten Notiz

git reset HEAD~2 Rollback der zweiten Notiz

Wenn Sie die Dateien zurücksetzen möchten Verwenden Sie im Arbeitsverzeichnis git reset - - hard HEAD^, um den ersten Datensatz zurückzusetzen Gehen Sie wie unten gezeigt davon aus, dass wir fünf übermittelte Versionen von A bis G haben. Die Versionsnummer von C lautet bbaf6fb5060b4875b18ff9ff637ce118256d6f20. Dann ist das Ergebnis nur: Es gibt drei übermittelte Versionen A- C ging

3.15. Git revert

Stellen Sie eine bestimmte Änderung an der Version wieder her, zum Beispiel: git revert commit_id (wobei commit_id eine eindeutige Zeichenfolge ist, die beim Festschreiben des Codes generiert wird


Zum Beispiel: (in 3.6) git revert dfb02e6e4f2f7b573337763e5c001 3802e392818 ( Führen Sie diesen Vorgang aus, um den letzten Commit-Vorgang wiederherzustellen namens Origin-Repository

3.17. Git sho

Zeigen Sie verschiedene Arten von Objekten an

3.18. Git ta

Erstellen, listen, löschen oder überprüfen Sie ein Tag-Objekt (signiert mit GPG)

Sie können eine bestimmte Version markieren, damit Sie Sie müssen sich nicht die komplexe Hash-Wert-Zeichenfolge für die Versionsnummer merken. Sie können beispielsweise „git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20“ verwenden, um die wiederhergestellte Version zu markieren. Wenn Sie die Version in Zukunft anzeigen möchten, können Sie sie verwenden der revert_version-Tag-Name anstelle des Hash-Werts

4. Git-Server-Betriebsbefehl (an den Server liefern

4.1. Git-Klon

Entfernen Der Code des Server-Warehouse wird in das lokal erstellte Verzeichnis verschoben (interagiert mit der Server

Nachdem die Remote-Git-Bibliothek über Git Clone abgerufen wurde, werden die Entwicklerinformationen in .git/config nicht zusammen geklont. Sie müssen noch Entwicklerinformationen zur .git/config-Datei der lokalen Bibliothek hinzufügen. Darüber hinaus müssen Entwickler die .gitignore-Datei selbst hinzufügen. Die über git clone erhaltene Remote-Git-Bibliothek enthält nur den aktuellen Arbeitszweig der Remote-Git-Bibliothek. Wenn Sie andere Zweigstelleninformationen erhalten möchten, müssen Sie diese mit „git branch -r“ anzeigen. Wenn Sie andere Zweigstellencodes benötigen, können Sie den Befehl „git checkout -b local branch name remote branch name“ verwenden. , wobei der entfernte Zweig Der in „git branch -r“ aufgeführte Zweigname ist normalerweise so etwas wie „Ursprung/Zweigname“. Wenn der lokale Zweigname bereits vorhanden ist, ist der Parameter „-b“ nicht erforderlich


Zum Beispiel

4.2

Holen Sie sich den Code aus dem Repository des Servers und führen Sie ihn mit dem lokalen Code zusammen. (Interagieren Sie mit dem Server und laden Sie den neuesten Code vom Server herunter. Dies entspricht: Git fetch + Git merge

Aktualisieren Sie den Code von anderen Repositorys (entweder remote oder lokal) auf das lokale, zum Beispiel: „git pull „origin „master“ dient dazu, den Code des Ursprungs-Repositorys auf den lokalen Master-Zweig zu aktualisieren.

git pull kann den Inhalt eines bestimmten Zweigs aus jeder Git-Bibliothek abrufen. Die Verwendung ist wie folgt: git pull username@ipaddr: Remote-Repository Ming Yuan End Branch Name Local Branch Name Dieser Befehl ruft den Remote-Branch-Namen der Remote-Git-Bibliothek in einen lokalen Branch der lokalen Git-Bibliothek ab. Wenn der lokale Branch-Name nicht geschrieben wird, wird er standardmäßig in den lokalen Current-Branch gezogen Es ist zu beachten, dass Git Pull auch zum Zusammenführen von Zweigen verwendet werden kann. Wenn Ihr lokaler Zweig bereits über Inhalte verfügt, führt Git Pull diese Dateien zusammen und benachrichtigt Sie, wenn es zu Konflikten kommt Beispiel: Git Pull benachrichtigt Sie Lokaler Code in ein Verzeichnis namens orgin Im Remote-Repository sind Git Push und Git Pull genau das Gegenteil, nämlich den Inhalt eines lokalen Zweigs an einen Remote-Zweig zu senden. Verwendung: git pushusername@ipaddr: Name des Remote-Repositorys, Name des lokalen Zweigs Remote-Zweig. Dieser Befehl verschiebt einen lokalen Zweig der lokalen Git-Bibliothek an den Remote-Zweignamen der Remote-Git-Bibliothek. Daher sollte beachtet werden, dass Git Push nicht automatisch zusammengeführt wird. Wenn ein Konflikt auftritt, wird er nach dem Push zwangsweise durch den Inhalt der Datei überschrieben, und es erfolgt keine Eingabeaufforderung. Dies ist während der kooperativen Entwicklung sehr gefährlich

4.4 den Code aus dem Repository des Servers. (Interagieren Sie mit dem Server und laden Sie den neuesten Code vom Server herunter. Dies entspricht dem Abrufen der neuesten Version vom Remote-Server. Er wird nicht automatisch zusammengeführt. Dies ist sicherer als Git-Pull

Verwenden Sie diese Methode, um die Updates auf dem Server abzurufen


Zum Beispiel: Wenn Sie git checkout nov/eclair_rocket verwenden (nov/eclair_rocket ist der Filialname auf dem Server), erhalten Sie den Code, der beim letzten Mal vom Server heruntergeladen wurde Verwenden Sie den Befehl „git fetch“. Wenn Sie zuerst „git fetch“ und dann „git checkout nov/eclair_rocket“ verwenden, werden zunächst die neuesten Aktualisierungsinformationen vom Server abgerufen und dann der neueste Code vom Server heruntergeladen. . . ) h:. . .



:. . :. ) l:. . )e gegenseitig). . G. w. g))t本:Record Record Record Record;:))):]. t. :e)) Zweig: 2). Zweig: Zweig-D-Datensatz. 2012-22:) Geschichte) Abschied. Name Zweig r Name. Name, Name Zweig D auf. . . Zweig. . . ;;:. Beschrieben h). v. es. codeghdhh. H. . Zweig. )gg)dd)hh)hh Name hat oberen Zweig t. D. F. f))v. e. wg:). 1. G. . S). . . . T))):. M))):. D. . . t-Befehl) order lp. . Vergleiche e.e:. Make ml" Namenseinstellungselement...;. Werden Sie ein Konzept.................. ..Alle Codes aktualisieren, zum Beispiel der Name der Aufgabe in der Bibliothek 3. Git Push, zum Beispiel der Alarmzweig, ist wie folgt: Branch GE Pul, zum Beispiel wird die Parameterdatei auf dem ausgetauscht Server (der Wert wird ausgetauscht) ta-Typ ho-Bibliothek fi-Operator-String jede Versionsmethode wird aufgezeichnet, zum Beispiel Inhaltsinhaltsinhaltsoption h>etrese-Funktion wie Zweigzweig-Quellenteilungsmethode zwei v~ Zweigaufforderungsquellenteilung Methode zusammen geteilt ge Notiz Commit m d dd

- m d例如信息支历区别的区分支分支除分te分支支上分支切换分支个分EA分支件)分支分支看分标签操作分支分支协作策略创建 总nc.c链接 m文件-fil覆盖原代tanc_incncchncch支上新分idagtataid_i i列出ncncchncnc分支分支到分ou代码he代码if比较if分支支上de合并rg比较有用 sholo例如变化显示 -idlo文件状态tu内容代码方式失败内容mi况.记录目录例如文件 r录 文件入 例如一步ad信息目录dbni操作基本方法本命t he操作组成的比ord or执行件中略机coaire员姓化配初始化事更新索引目录录内分组Git概念

1.1. Git库中由三部分组

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内

1) 工作目录:用户本地的目录

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新


1.2. 使用Git时的初始化事

1.2.1. Git初始化配

1) 配置使用git仓库的人员姓

git config --global user.name "Your Name Comes Here

2) 配置使用git仓库的人员emai

git config --global user.email you@yourdomain.example.co

1.2.2. Git文档忽略机

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行

echo “zh” > .gitignor

git add 

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignor

1.3. Das Verhältnis zwischen Git und Repo

Git-Vorgänge entsprechen im Allgemeinen einem Lager, während Repo-Vorgänge im Allgemeinen einem Projekt entsprechen, d Das gesamte Recket-Projekt wird verwendet, und Repo wird verwendet, wenn das gesamte Recket-Projekt betrieben wird. Verwenden Sie Git, wenn Sie mit einem bestimmten Repository arbeiten. Führen Sie Git-Operationen in dem Verzeichnis aus, das das versteckte Verzeichnis .git enthält clone, um die Verwendung von git clone


3 zu erhalten In Zukunft werden alle Dateiänderungsinformationen in diesem Verzeichnis gespeichert, im Gegensatz zu CVS, das in jedem Verzeichnis und Unterverzeichnis ein CVS-Verzeichnis erstellt. Im .git-Verzeichnis gibt es eine Konfigurationsdatei, die geändert werden kann 3.2. Git ad

fügt die geänderten oder neu hinzugefügten Dateien zum Git-Index hinzu. Dies ist auch die Datei vor der Übermittlung Wenn ein Verzeichnis als Parameter folgt, werden alle Unterverzeichnisse und Dateien im gesamten Verzeichnis rekursiv hinzugefügt. Beispiel: git add dir1 (fügen Sie das Verzeichnis dir1 unter hinzu). Verzeichnis. Alle Dateien werden hinzugefügt

Git add f1 f2 (F1, f2-Dateien hinzufügen

git add . (Alle Dateien und Unterverzeichnisse im aktuellen Verzeichnis hinzufügen

3.3. Git r

Aus dem aktuellen Arbeitsverzeichnis entfernen und Dateien indizieren

kann rekursiv gelöscht werden, d. h. wenn einem Verzeichnis als Parameter gefolgt wird, werden alle Unterverzeichnisse und Dateien im gesamten Verzeichnis rekursiv gelöscht. Beispiel:

git rm –r * (Geben Sie ein Verzeichnis ein und führen Sie dies aus. Anweisung, alle Dateien und Unterverzeichnisse im Verzeichnis werden gelöscht gelöscht werden) Datei, löschen Sie nur die Dateidatensätze im Index. Entfernen Sie die Datei, die dem Cache hinzugefügt wurde, damit die Datei beim Festschreiben nicht übermittelt wird. Es eignet sich jedoch zum Hinzufügen vieler Dateien Ich möchte einige davon ausschließen.

3.4. Git Commi

Senden Sie die Änderungen an das aktuelle Arbeitsverzeichnis. Rufen Sie den Git-Commit-Befehl direkt auf und Sie werden aufgefordert, die Kommentare in der Befehlszeile einzugeben Folgendes: git commit -m „Erstes Commit von gittutor. repostory“. Beachten Sie, dass der Git-Commit-Kommentar im Gegensatz zu CVS nicht leer sein darf, da sonst die Übermittlung fehlschlägt werden von git add nicht identifiziert. Diese Methode wird jedoch nicht empfohlen. Bei jeder Übermittlung erstellt git einen eindeutigen Commit-Identifikationscode für den globalen Code. Benutzer können den Code bei jeder Übermittlung über den Befehl git reset wiederherstellen commit –-amend –m „message“ (kontinuierliche Änderung des übermittelten Inhalts auf einer Commit-ID

3.5. Git-Status

Zeigen Sie den Status des Repositorys an. Sie können erkennen, welche Dateien sich geändert haben, welche Dateien nicht zur Git-Bibliothek hinzugefügt wurden usw. Es wird empfohlen, den Bibliotheksstatus vor jedem Commit mit diesem Befehl zu bestätigen

Die häufigste Fehlbedienung besteht darin, eine Datei zu ändern und den Festschreibungsvorgang direkt aufzurufen, ohne git add aufzurufen, um die Git-Bibliothek darüber zu informieren, dass sich die Datei geändert hat, was dazu führt, dass die Datei nicht tatsächlich übermittelt wird. Wenn der Entwickler zu diesem Zeitpunkt der Meinung ist, dass die Datei übermittelt wurde, und die Datei weiterhin ändert oder sogar löscht, unterliegt der geänderte Inhalt keiner Versionsverwaltung. Wenn Sie den Git-Status jedes Mal vor dem Absenden überprüfen, können Sie diesen Fehler finden. Wenn Sie daher den Befehl git status aufrufen, müssen Sie besonders auf die Dateien achten, bei denen die Meldung „Geändert, aber nicht aktualisiert:“ angezeigt wird. Bei diesen Dateien handelt es sich um alle Dateien, die sich im Vergleich zum letzten Commit geändert haben, aber nicht von git add

3.6 identifiziert werden. Sehen Sie sich das Verlaufsprotokoll an, einschließlich jeder Versionsänderung. Jede Versionsänderung entspricht einer Commit-ID

Git-Protokoll -

-1 bedeutet, dass nur ein Commit angezeigt wird. Wenn Sie 5 anzeigen möchten, nur -5. Wenn nicht angegeben, wird das Git-Protokoll ab dem Commit angezeigt

Git log --stat –summary (zeigt die detaillierten Änderungen jeder Version an

In den Projektprotokollinformationen die erste Zeile jedes Protokolls (d. h. das Zeichenfolgenzeichen). ) ist der Name der Versionsaktualisierung. Wir können diesen Namen als Projektversionsnummer verstehen. Die Projektversionsnummer sollte eindeutig sein und von Git automatisch generiert werden. Verwenden Sie die Nummer als Parameter der Befehl git-show, um die Update-Details der Projektversion anzuzeigen, zum Beispiel

1) Git lo


2) Git sho


Tatsächlich ist der obige Befehl nicht der echte. Durch das Anpassen der Versionsnummer wird nur ein Tag-Objekt erstellt, was nützlicher ist, wenn die Projektversion für die Außenwelt freigegeben wird. 3.7 Git Merge führt den vom Server heruntergeladenen Code mit dem lokalen Code zusammen. Oder führen Sie eine Zweigzusammenführung durch

Zum Beispiel: Wenn Sie sich derzeit im Hauptzweig befinden und den Zweig dev mit dem Master zusammenführen möchten, dann git merge de

Hinweis: git merge nov/eclair_eocket (dient zum Zusammenführen des eclair_eocket-Zweigs des Server-Git Bibliothek in Auf dem lokalen Zweig

git rebase nov/eclair_eocket (ordnet den eclair_eocket-Zweig der Server-Git-Bibliothek einem lokalen temporären Zweig zu, führt dann die Änderungen im lokalen Zweig in diesem temporären Zweig zusammen und verwendet diesen temporären Zweig dann zum Initialisieren der lokale Zweig

3.8. Git diff

Vergleichen Sie den lokalen Code mit dem Code im Index oder vergleichen Sie den Code im Index mit dem Code im lokalen Warehouse

1) Git dif

Vergleichen Sie das Arbeitsverzeichnis mit dem Code im Indexcode

2) Git diff - - Cache

Vergleichen Sie den Index mit dem Code im lokalen Warehouse

3.9. Git checkou

3.9.1) Erstellen Sie einen neuen Zweig und Wechseln Sie zur Filiale

Git checkout –b neuer Zweig

2) Wechseln Sie zu einer etablierten lokalen Filiale local_branc

Git checkout local_branc

(nach Verwendung von cat .git/HEAD wird refs:refs/heads/ local_branch angezeigt

3) Wechseln Sie zu einem Zweig auf dem Server remote_branc

Git checkout remote_branc

(Der entfernte Zweig remote_branch kann über git branch –r

4 aufgelistet werden) Wechseln Sie zu einem Commit i

Git checkout commit_i

(Verwenden Sie cat .git/ Nach HEAD wird commit_id angezeigt

5) Wechseln Sie zu einem bestimmten ta

Git checkout ta

(Nach der Verwendung von cat .git/HEAD wird tag

angezeigt

Hinweis: Mit Ausnahme von 1) und 2) werden die anderen drei nur in einen temporären Zustand (kein Zweig) versetzt (dieser Kopf ist abgetrennt). Zu diesem Zeitpunkt können Sie mit git branch sehen, dass er aktiviert ist (kein Zweig). ), cat. git/HEAD sieht einen Verweis auf die entsprechende Commit-ID. Diese (keine Niederlassung) existiert nur vorübergehend und ist keine wirklich etablierte Niederlassung. Wenn 2) zu diesem Zeitpunkt ausgeführt wird, verschwindet dieser (kein Zweig) automatisch. Wenn 1) ausgeführt wird, wird ein neuer Zweig erstellt und dieser (kein Zweig) wird zu diesem Zeitpunkt an diesen neuen Zweig angehängt , cat .git/ refs/heads/new_branch kann sehen, dass es gerade auf die Commit-ID verwiesen hat

3.9.2 Initialisieren Sie den neuen Zweig mit dem vorhandenen Zweig

Führen Sie den folgenden Befehl aus und wechseln Sie dann zu einem etablierten lokalen Zweig Zweig oder ein Remote-Zweig Oder erstellen Sie einen neuen Zweig new_branch mit einer bestimmten Commit-ID oder einem bestimmten Tag und hängen Sie ihn an diesen neuen Zweig

1) Wechseln Sie zu einem bereits eingerichteten lokalen Zweig local_branch und verwenden Sie diesen Zweig, um einen neuen Zweig zu initialisieren new_branch

git checkout –b new_branch local_branc

2) Wechseln Sie zu einem bestimmten Remote-Zweig remote_branch und verwenden Sie diesen Zweig, um einen neuen Zweig zu initialisieren new_branch

Git checkout –b new_branch remote_branc

3) Wechseln Sie zu einer bestimmten Commit-ID, und erstelle einen neuen Zweig new_branc

Git checkout –b new_branch commit_i

4) Wechseln Sie zu einem Tag und erstellen Sie einen neuen Zweig new_branc

Git checkout –b new_branch ta

3.9.3 Wiederherstellungscode

Zum Beispiel „git checkout app/model/ user.rb“ aktualisiert die Datei user.rb von der zuletzt übermittelten Version zurück und alle Inhalte im nicht festgeschriebenen Arbeitsverzeichnis werden überschrieben


3.10. Git-ls-fil

Ansicht aktuell Welche Dateien gibt es in der Git-Bibliothek? 3.12. Git-Branc

3.12.1 Die Gesamtkosten für die Erstellung eines Zweigs in einem Git-Repository sind nahezu Null, sodass Sie nicht geizig sein müssen, wenn Sie git init zum ersten Mal ausführen. Das System erstellt einen Namen für „Master“.

Hier sind einige gängige Verzweigungsstrategien

Erstellen Sie Ihren eigenen persönlichen Arbeitszweig, um zu viele Eingriffe in den Hauptzweig „Master“ zu vermeiden und die Kommunikation mit anderen zu erleichtern . Kommunikation und Zusammenarbeit

Erstellen Sie bei Arbeiten mit hohem Risiko einen experimentellen Zweig.

Wenn Sie die Arbeit anderer Personen zusammenführen, erstellen Sie am besten einen temporären Zweig zum Zusammenführen und „holen“ Sie ihn nach Abschluss der Zusammenführung in Ihren eigenen Zweig

Hinzufügen, Löschen, Überprüfen und andere Vorgänge für Zweige

Hinweis: Zweiginformationen befinden sich im Allgemeinen im Verzeichnis .git/refs/, wobei das Verzeichnis „heads“ der lokale Zweig, „remotes“ der Zweig auf dem entsprechenden Server und „tags“ ist Das Tag

3.12 .2. Zweige anzeigen

git branch listet alle Zweige in der lokalen Git-Bibliothek auf. Wenn unter den aufgelisteten Zweigen ein * vor dem Zweignamen steht, bedeutet dies, dass dieser Zweig der aktuelle Zweig ist

git branch –r listet alle Zweige der Server-Git-Bibliothek auf

(Sie können weiterhin den Befehl „git checkout“ verwenden -b Name des lokalen Filialzweigs (Branchenname), um die Codedatei eines bestimmten Zweigs auf dem Server abzurufen branch

1) git branch branch

Obwohl der Branch erstellt wird, wird der aktuell funktionierende Branch nicht auf den neu erstellten Branch umgestellt. Daher ist zum Wechseln auch der Befehl „git checkout branch name“ erforderlich

2) git Kasse –b-Filiale

Es wurde nicht nur ein Zweig erstellt, sondern auch der aktuelle Arbeitszweig auf den Zweig umgestellt

3.12.5 Wechseln Sie zu einem Zweig: Git Checkout-Zweig

Wechseln Sie zum Hauptzweig: Git Checkout Master

3.12.6 branch

git branch –D branch

Hinweis: Nach dem Löschen können alle in diesem Zweig vorgenommenen Änderungen nicht wiederhergestellt werden. Diesen Zweig zwangsweise löschen

3.12.7. Vergleichen Sie die Dateien in den beiden Zweigen

git diff Master-Zweigname (vergleichen Sie den Unterschied zwischen dem Hauptzweig und einem anderen Zweig

3.12.8. Sehen Sie sich den Zweigverlauf an

git-show -branch (Zeigen Sie die Commit-Kommentare und Informationen des aktuellen Zweigs an

git-show-branch -all (Zeigen Sie die Commit-Kommentare und Informationen aller Zweige an) Zum Beispiel

* [dev] d

! [master] m

-

* [dev] d

* [dev^] d

* [dev~2] d

*+ [master] m

Im obigen Beispiel bedeuten die beiden Zeilen oben „--“. dass es zwei Zweige Dev und Master gibt und das letzte Protokoll, das im Dev-Zweig übermittelt wurde, „d2“ ist und das letzte Protokoll, das im Master-Zweig übermittelt wurde, „m2“ ist. Die Zeilen unter „--“ stellen den Verlauf der Zweigentwicklung dar , wobei dev den letzten Commit darstellt, der im Entwicklungszweig stattgefunden hat, dev^ den vorletzten Commit darstellt, der im Entwicklungszweig stattgefunden hat. dev~2 den drittletzten Commit darstellt, der im Entwicklungszweig stattgefunden hat

3.12.9. Zeigen Sie den aktuellen Zweig an. Vorgangshinweise

git whatchange

3.12.10. Punkte zusammenführen

Methode 1

git merge „Kommentare“ Zielzweig zusammenführen Quellpunkte zusammenführen

Wenn beim Zusammenführen ein Konflikt auftritt, werden Sie von Git aufgefordert

Zum Beispiel: git checkout master (wechseln Sie zum Master-Zweig

git merge HEAD dev~2 (merge master branch und dev~2 branch) oder: git merge master dev~

Methode 2

git pull merge target branch merge Quellzweig

Zum Beispiel: git checkout master (wechseln Sie zum Hauptzweig

git pull. dev~2 (führen Sie den aktuellen Zweig und den Zweig dev~2 zusammen

3.13). Git rebas

wird im Allgemeinen beim Zusammenführen verwendet Aktueller Inhalt des Servers auf den lokalen Server, zum Beispiel: In Version C wird der Inhalt vom Server auf den lokalen Server übertragen und der lokale Inhalt wird geändert. Zu diesem Zeitpunkt möchte ich den lokal geänderten Inhalt an den Server senden. Ich habe jedoch festgestellt, dass sich die Version auf dem Server in G geändert hat. Zu diesem Zeitpunkt muss ich zuerst die neueste Version auf dem Server mit der lokalen Version zusammenführen. Dies wird beispielsweise anhand der folgenden beiden klarer erläutert Bilder Nachdem der Rebase-Befehl ausgeführt wurde, wird der Verzweigungspunkt tatsächlich von C nach G verschoben, sodass die Verzweigung von C nach G erfolgt. Die Umkehrung und Wiederherstellung der Git-Rese-Bibliothek ist Wird nicht nur zum Zurücksetzen einiger aufgegebener F&E-Codes verwendet, sondern hat auch eine wichtige Funktion. Nach der lokalen Entwicklung klonen wir die erneute Übermittlung an Remote. Wenn jedoch die lokale Codebasis entwickelt wird, gibt es funktionale Commits, Commits für Sicherungszwecke usw. Kurz gesagt, das Festschreibungsprotokoll enthält viele nutzlose Protokolle, und wir möchten diese Protokolle nicht an die Bibliothek senden, wenn sie an die Fernbedienung zurückgesendet werden. Daher müssen Sie Git Reset verwenden. Das Konzept von Git Reset ist relativ kompliziert. Seine Befehlsform: git reset [--mixed |. --soft | --hard] [

Optionen des Befehls

--mixed Dies ist die Standardoption. Zum Beispiel git reset [--mixed] dev^ (die Definition von dev^ finden Sie in 2.6.5). Seine Funktion besteht lediglich darin, den Zweigstatus auf dev1^ zurückzusetzen, ändert jedoch nicht den Inhalt von Arbeitsdateien. Das heißt, alle Dateiänderungen von dev1^ zu dev1 bleiben erhalten, aber alle Festschreibungsprotokolle zwischen dev1^ und dev1 werden gelöscht und der geänderte Dateiinhalt wird von git add nicht identifiziert. Wenn Sie erneut festschreiben möchten, müssen Sie dies auch tun Fügen Sie die geänderten Dateien mit einem Git hinzu. Auf diese Weise erhalten Sie nach dem Festschreiben einen sehr sauberen Festschreibungsdatensatz. (Das Zurücksetzen des Inhalts des Index und des Warehouse

--soft entspricht dem Ausführen von „git reset –mixed“ und dem anschließenden Ausführen von „git add“ für die geänderten Dateien. Wenn Sie diese Option verwenden, können Sie direkt einen Commit durchführen. (Antwort: Zurückziehen des Inhalts des Warehouse

--hard führt dazu, dass alle Informationen zurückgesetzt werden, einschließlich des Dateiinhalts. Wird im Allgemeinen nur beim Zurücksetzen aufgegebenen Codes verwendet. Nach der Ausführung kann der Dateiinhalt nicht wiederhergestellt werden und Warehouse werden zurückgesetzt

Zum Beispiel

Wechseln Sie zum verwendeten Zweig

git reset HEAD^ Rollback der ersten Notiz

git reset HEAD~2 Rollback der zweiten Notiz

Wenn Sie die Dateien zurücksetzen möchten Verwenden Sie im Arbeitsverzeichnis git reset - - hard HEAD^, um den ersten Datensatz zurückzusetzen Gehen Sie wie unten gezeigt davon aus, dass wir fünf übermittelte Versionen von A bis G haben. Die Versionsnummer von C lautet bbaf6fb5060b4875b18ff9ff637ce118256d6f20. Dann ist das Ergebnis nur: Es gibt drei übermittelte Versionen A- C ging

3.15. Git revert

Stellen Sie eine bestimmte Änderung an der Version wieder her, zum Beispiel: git revert commit_id (wobei commit_id eine eindeutige Zeichenfolge ist, die beim Festschreiben des Codes generiert wird


Zum Beispiel: (in 3.6) git revert dfb02e6e4f2f7b573337763e5c001 3802e392818 ( Führen Sie diesen Vorgang aus, um den letzten Commit-Vorgang wiederherzustellen namens Origin-Repository

3.17. Git sho

Zeigen Sie verschiedene Arten von Objekten an

3.18. Git ta

Erstellen, listen, löschen oder überprüfen Sie ein Tag-Objekt (signiert mit GPG)

Sie können eine bestimmte Version markieren, damit Sie Sie müssen sich nicht die komplexe Hash-Wert-Zeichenfolge für die Versionsnummer merken. Sie können beispielsweise „git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20“ verwenden, um die wiederhergestellte Version zu markieren. Wenn Sie die Version in Zukunft anzeigen möchten, können Sie sie verwenden der revert_version-Tag-Name anstelle des Hash-Werts

4. Git-Server-Betriebsbefehl (an den Server liefern

4.1. Git-Klon

Entfernen Der Code des Server-Warehouse wird in das lokal erstellte Verzeichnis verschoben (interagiert mit der Server

Nachdem die Remote-Git-Bibliothek über Git Clone abgerufen wurde, werden die Entwicklerinformationen in .git/config nicht zusammen geklont. Sie müssen noch Entwicklerinformationen zur .git/config-Datei der lokalen Bibliothek hinzufügen. Darüber hinaus müssen Entwickler die .gitignore-Datei selbst hinzufügen. Die über git clone erhaltene Remote-Git-Bibliothek enthält nur den aktuellen Arbeitszweig der Remote-Git-Bibliothek. Wenn Sie andere Zweigstelleninformationen erhalten möchten, müssen Sie diese mit „git branch -r“ anzeigen. Wenn Sie andere Zweigstellencodes benötigen, können Sie den Befehl „git checkout -b local branch name remote branch name“ verwenden. , wobei der entfernte Zweig Der in „git branch -r“ aufgeführte Zweigname ist normalerweise so etwas wie „Ursprung/Zweigname“. Wenn der lokale Zweigname bereits vorhanden ist, ist der Parameter „-b“ nicht erforderlich


Zum Beispiel

4.2

从服务器的仓库中获取代码,和本地代码合并。(与服务器交互,从服务器上下载最新代码,等同于: Git fetch + Git merge

从其它的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:“git pull origin master ”就是将origin这个版本库的代码更新到本地的master主分支

git pull可以从任意一个git库获取某个分支的内容。用法如下

git pull  username@ipaddr:远端repository名远端分支名 本地分支名。这条命令将从远端git库的远端分支名获取到本地git库的一个本地分支中。其中,如果不写本地分支名,则默认pull到本地当前分支

需要注意的是,git pull也可以用来合并分支。 和git merge的作用相同。 因此,如果你的本地分支已经有内容,则git pull会合并这些文件,如果有冲突会报警

例如






4.3. Git push

将本地commit的代码更新到远程版本库中,例如 “git push origin”就会将本地的代码更新到名为orgin的远程版本库中

git push和git pull正好想反,是将本地某个分支的内容提交到远端某个分支上。用法: git pushusername@ipaddr:远端repository名本地分支名 远端分支名。这条命令将本地git库的一个本地分支push到远端git库的远端分支名中

需要格外注意的是,git push好像不会自动合并文件。因此,如果git push时,发生了冲突,就会被后push的文件内容强行覆盖,而且没有什么提示。 这在合作开发时是很危险的事情

例如


4.4. Git fetc

从服务器的仓库中下载代码。(与服务器交互,从服务器上下载最新代码

相当于从远程获取最新版本到本地,不会自动merge,比Git pull更安全些

使用此方法来获取服务器上的更新

Zum Beispiel: Wenn Sie git checkout nov/eclair_rocket verwenden (nov/eclair_rocket ist der Filialname auf dem Server), erhalten Sie den Code, der vom Server heruntergeladen wurde, als Sie den Befehl git fetch zuletzt verwendet haben. Verwenden Sie dann git checkout nov /eclair_rocket, rufen Sie zunächst die neuesten Update-Informationen vom Server ab und laden Sie dann den neuesten Code vom Server herunter. . . ) h:. . .



:. . :. ) l:. . )e gegenseitig). . G. w. g))t本:Record Record Record Record;:))):]. t. :e)) Zweig: 2). Zweig: Zweig-D-Datensatz. 2012-22:) Geschichte) Abschied. Name Zweig r Name. Name, Name Zweig D auf. . . Zweig. . . ;;:. Beschrieben h). v. es. codeghdhh. H. . Zweig. )gg)dd)hh)hh Name hat oberen Zweig t. D. F. f))v. e. wg:). 1. G. . S). . . . T))):. M))):. D. . . t-Befehl) order lp. . Vergleiche e.e:. Machen Sie ml" Namenseinstellungselement ...;. werden...) h:...





:...:.) l:...) e gegenseitig).. . w . Name, Zweig D.;: v. hh. . ;. werden. . . ) h:. . .



:. . :. ) l:. . )e gegenseitig). . G. w. g))t本:Record Record Record Record;:))):]. t. :e)) Zweig: 2). Zweig: Zweig-D-Datensatz. 2012-22:) Geschichte) Abschied. Name Zweig r Name. Name, Name Zweig D auf. . . Zweig. . . ;;:. Beschrieben h). v. es. codeghdhh. H. . Zweig. )gg)dd)hh)hh Name hat oberen Zweig t. D. F. f))v. e. wg:). 1. G. . S). . . . T))):. M))):. D. . . t-Befehl) order lp. . Vergleiche e.e:. Machen Sie ml" Namenseinstellungselement ...;. werden...) h:...





:...:.) l:...) e gegenseitig).. . w . Name, Zweig D.;: v. hh. . ;. werden. . . ) h:. . .



:. . :. ) l:. . )e gegenseitig). . G. w. g))t本:Record Record Record Record;:))):]. t. :e)) Zweig: 2). Zweig: Zweig-D-Datensatz. 2012-22:) Geschichte) Abschied. Name Zweig r Name. Name, Name Zweig D auf. . . Zweig. . . ;;:. Beschrieben h). v. es. codeghdhh. H. . Zweig. )gg)dd)hh)hh Name hat oberen Zweig t. D. F. f))v. e. wg:). 1. G. . S). . . . T))):. M))):. D. . . t-Befehl) order lp. . Vergleiche e.e:. Machen Sie ml" Namenseinstellungselement ...;. werden...) h:...





:...:.) l:...) e gegenseitig).. . w . Name, Zweig D.;: v. hh. . ;. werden. . . ) h:. . .

🎜🎜🎜:. . :. ) l:. . )e gegenseitig). . G. w. g))t本:Record Record Record Record;:))):]. t. :e)) Zweig: 2). Zweig: Zweig-D-Datensatz. 2012-22:) Geschichte) Abschied. Name Zweig r Name. Name, Name Zweig D auf. . . Zweig. . . ;;:. Beschrieben h). v. es. codeghdhh. H. . Zweig. )gg)dd)hh)hh Name hat oberen Zweig t. D. F. f))v. e. wg:). 1. G. . S). . . . T))):. M))):. D. . . t-Befehl) order lp. . Vergleiche e.e:. Make ml“ Namenseinstellungselement ...;. werde...) h:...🎜🎜🎜

:. . :. ) l:. . )e gegenseitig). . G. w. g))t本:Record Record Record Record;:))):]. t. :e)) Zweig: 2). Zweig: Zweig-D-Datensatz. 2012-22:) Geschichte) Abschied. Name Zweig r Name. Name, Name Zweig D auf. . . Zweig. . . ;;:. Beschrieben h). v. es. codeghdhh. H. . Zweig. )gg)dd)hh)hh Name hat oberen Zweig t. D. F. f))v. e. wg:). 1. G. . S). . . . T))):. M))):. D. . . t-Befehl) order lp. . Vergleiche e.e:. Make ml“ Namenseinstellungselement ...;. werde...) h:...



:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成Git概念
1.1. Git库中由三部分组成
Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内。
1) 工作目录:用户本地的目录;
2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引。
3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新。
Detaillierte Einführung in die Verwendung von Git
1.2. 使用Git时的初始化事项
1.2.1. Git初始化配置
1) 配置使用git仓库的人员姓名
git config --global user.name "Your Name Comes Here"
2) 配置使用git仓库的人员email
git config --global user.email you@yourdomain.example.com
1.2.2. Git文档忽略机制
工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中。
例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行:
echo “zh” > .gitignore
git add .
有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignore
1.3. Git与Repo的比较
Git操作一般对应一个仓库,而Repo操作一般对应一个项目,即一个项目会由若干仓库组成。
例如,在操作整个Recket项目时使用Repo,而操作其中的某个仓库时使用Git。在包含隐藏目录.git的目录下执行git操作。

2. Git-Hilfe
Git-Hilfe Holen Sie sich grundlegende Git-Befehle
(Wenn Sie beispielsweise wissen möchten, wie Sie einen bestimmten Befehl verwenden: Verwenden Sie Git Help Clone, um zu erfahren, wie Git Clone verwendet wird)

3. Grundlegende Git-Befehle für den lokalen Betrieb
3.1. Git init
Oder verwenden Sie git init-db.
Erstellen Sie ein leeres Git-Repository. Erstellen Sie im aktuellen Verzeichnis ein .git-Unterverzeichnis. In Zukunft werden alle Dateiänderungsinformationen in diesem Verzeichnis gespeichert, im Gegensatz zu CVS, das in jedem Verzeichnis und Unterverzeichnis ein CVS-Verzeichnis erstellt.
Im .git-Verzeichnis befindet sich eine Konfigurationsdatei, deren Konfigurationsinformationen geändert werden können.
3.2. Git-Hinzufügen
Das Hinzufügen der geänderten oder neu hinzugefügten Dateien zum Git-Index bedeutet, dass sie auch im Versionsverlauf aufgezeichnet werden müssen Vorlage.
Es kann rekursiv hinzugefügt werden. Wenn also ein Verzeichnis als Parameter folgt, werden alle Unterverzeichnisse und Dateien im gesamten Verzeichnis rekursiv hinzugefügt. Zum Beispiel:
git add dir1 (Fügen Sie das Verzeichnis dir1 hinzu, alle Dateien im Verzeichnis werden hinzugefügt)
Git add f1 f2 (fügen Sie f1-, f2-Dateien hinzu)
git add (fügen Sie alle Dateien und Unterverzeichnisse im aktuellen Verzeichnis hinzu)
3.3 . Git rm
Dateien aus dem aktuellen Arbeitsverzeichnis und Index entfernen.
Es kann rekursiv gelöscht werden. Wenn also ein Verzeichnis als Parameter folgt, werden alle Unterverzeichnisse und Dateien im gesamten Verzeichnis rekursiv gelöscht. Zum Beispiel:
git rm –r * (Geben Sie ein Verzeichnis ein und führen Sie diese Anweisung aus, um alle Dateien und Unterverzeichnisse im Verzeichnis zu löschen)
git rm f1 (Löschen Sie die Datei f1, einschließlich dieses Dateieintrags im lokalen Verzeichnis und Index)
git rm --ached f1 (Datei f1 löschen, die lokale Verzeichnisdatei wird nicht gelöscht, nur der Dateieintrag im Index wird gelöscht; die von Git hinzugefügte Datei wird in den Cache entfernt, sodass die Datei nicht gelöscht wird Beim Commit eingereicht, geeignet für Es wurden viele Dateien auf einmal hinzugefügt, aber ich wollte einige davon ausschließen.)
3.4 Git-Commit
Senden Sie die Änderungen an das aktuelle Arbeitsverzeichnis.
Rufen Sie direkt den Befehl git commit auf und Sie werden aufgefordert, die Kommentare einzugeben. Füllen Sie die Commit-Kommentare in der Befehlszeile wie folgt aus: git commit -m „Initial commit of gittutor repostory“. Beachten Sie, dass der Git-Commit-Kommentar im Gegensatz zu CVS nicht leer sein darf, da sonst der Commit fehlschlägt.
Git Commit verfügt auch über einen Parameter -a, der Änderungen erzwingen kann, die von Git Add nicht identifiziert werden. Diese Methode wird jedoch nicht empfohlen.
Für jede Übermittlung erstellt Git einen eindeutigen Commit-Identifikationscode für den globalen Code. Benutzer können den Code bei jeder Übermittlung über den Git-Reset-Befehl wiederherstellen.
git commit –-amend –m „message“ (kontinuierliche Änderung des übermittelten Inhalts auf einer Commit-ID)
3.5 Git-Status
Überprüfen Sie den Status des Repositorys. Sie können erkennen, welche Dateien sich geändert haben, welche Dateien nicht zur Git-Bibliothek hinzugefügt wurden usw. Es wird empfohlen, den Bibliotheksstatus vor jedem Commit mit diesem Befehl zu bestätigen.
Die häufigste Fehlbedienung besteht darin, eine Datei zu ändern und den Festschreibungsvorgang direkt aufzurufen, ohne git add aufzurufen, um die Git-Bibliothek darüber zu informieren, dass sich die Datei geändert hat, was dazu führt, dass die Datei nicht tatsächlich übermittelt wird. Wenn der Entwickler zu diesem Zeitpunkt der Meinung ist, dass die Datei übermittelt wurde, und die Datei weiterhin ändert oder sogar löscht, unterliegt der geänderte Inhalt keiner Versionsverwaltung. Wenn Sie den Git-Status jedes Mal vor dem Absenden überprüfen, können Sie diesen Fehler finden. Wenn Sie daher den Befehl git status aufrufen, müssen Sie besonders auf die Dateien achten, bei denen die Meldung „Geändert, aber nicht aktualisiert:“ angezeigt wird. Bei diesen Dateien handelt es sich um alle Dateien, die sich im Vergleich zum letzten Commit geändert haben, aber von git add nicht identifiziert werden.
3.6. Git-Protokoll
Sehen Sie sich das historische Protokoll an, einschließlich jeder Versionsänderung. Jede Versionsänderung entspricht einer Commit-ID.
Git-Protokoll -1
-1 bedeutet, nur ein Commit anzuzeigen. Wenn Sie 5 Commits anzeigen möchten, nur -5. Wenn nicht angegeben, wird das Git-Protokoll ab dem Commit angezeigt.
Git log --stat –summary (zeigt die detaillierten Änderungen jeder Version an)
In den Projektprotokollinformationen ist die erste Zeile jedes Protokolls (dh die Zeichenfolge) der Name der Übermittlung des Versionsupdates Verwenden Sie dies. Unter Benennung versteht man die Versionsnummer des Projekts. Die Projektversionsnummer sollte eindeutig sein und wird standardmäßig automatisch von Git generiert, um eine bestimmte Aktualisierung des Projekts anzuzeigen. Wenn wir die Projektversionsnummer als Parameter des Befehls git-show verwenden, können wir die Aktualisierungsdetails der Projektversion anzeigen. Zum Beispiel:
1) Git-Protokoll
Detaillierte Einführung in die Verwendung von Git
2) Git-Anzeige
Detaillierte Einführung in die Verwendung von Git
Tatsächlich passt der obige Befehl die Versionsnummer nicht wirklich an, sondern erstellt nur ein Tag-Objekt, was nützlicher ist, wenn die Projektversion für freigegeben wird Außenwelt.
3.7. Git-Merge
Den vom Server heruntergeladenen Code mit dem lokalen Code zusammenführen. Oder Zweige zusammenführen.
Zum Beispiel: Wenn Sie sich derzeit im Hauptzweig befinden und den Zweig dev mit dem Master zusammenführen möchten, dann git merge dev
Hinweis: git merge nov/eclair_eocket (es führt den eclair_eocket-Zweig der Server-Git-Bibliothek mit dem lokalen Zweig zusammen)
git rebase nov/eclair_eocket (ordnet den eclair_eocket-Zweig der Server-Git-Bibliothek einem lokalen temporären Zweig zu, führt dann die Änderungen am lokalen Zweig in diesem temporären Zweig zusammen und verwendet dann diesen temporären Zweig, um den lokalen Zweig zu initialisieren)
3.8. Git diff
Vergleichen Sie den lokalen Code mit dem Code im Index oder vergleichen Sie den Code im Index mit dem Code im lokalen Warehouse.
1) Git diff
Vergleichen Sie den Code im Arbeitsverzeichnis und im Index.
2) Git diff - - zwischengespeichert
Vergleichen Sie den Code im Index und im lokalen Warehouse. ( Nach der Verwendung von cat .git/HEAD wird refs:refs/heads/ local_branch angezeigt ) Wechseln Sie zu einer bestimmten Commit-ID
Git checkout commit_id
(Nach Verwendung von cat .git/HEAD wird die commit_id angezeigt)
5) Wechseln Sie zu einem bestimmten Tag
Git checkout tag
(Nach Verwendung von cat .git/HEAD wird die commit_id angezeigt wird angezeigt) Tag)
Hinweis: Mit Ausnahme von 1) und 2) werden die anderen drei nur in einen temporären Zustand (kein Zweig) versetzt (dieser Kopf ist zu diesem Zeitpunkt getrennt). ist aktiviert (kein Zweig). cat .git/HEAD sieht, dass es auf die entsprechende Commit-ID zeigt. Diese (keine Niederlassung) existiert nur vorübergehend und ist keine wirklich etablierte Niederlassung. Wenn 2) zu diesem Zeitpunkt ausgeführt wird, verschwindet dieser (kein Zweig) automatisch. Wenn 1) ausgeführt wird, wird ein neuer Zweig erstellt und dieser (kein Zweig) wird zu diesem Zeitpunkt an diesen neuen Zweig angehängt , cat .git/ refs/heads/new_branch Sie können sehen, dass es gerade auf die Commit-ID verweist.
3.9.2. Initialisieren Sie einen neuen Zweig mit einem vorhandenen Zweig.
Führen Sie den folgenden Befehl aus, um einen neuen Zweig „new_branch“ zu erstellen, während Sie zu einem etablierten lokalen Zweig oder einem Remote-Zweig oder einer Commit-ID oder einem Tag wechseln.
1) Wechseln Sie zu einem bereits eingerichteten lokalen Zweig „local_branch“ und verwenden Sie diesen Zweig, um einen neuen Zweig „new_branch“ zu initialisieren.
git checkout –b new_branch local_branch
2) Wechseln Sie zu einem Remote-Zweig remote_branch und verwenden Sie diesen Zweig, um einen neuen Zweig new_branch zu initialisieren.
Git checkout –b new_branch remote_branch
3) Wechseln Sie zu einer bestimmten Commit-ID und erstellen Sie einen neuen Branch new_branch
Git checkout –b new_branch commit_id
4) Wechseln Sie zu einem bestimmten Tag und erstellen Sie einen neuen Branch new_branch
Git checkout –b new_branch tag
3.9.3. Wiederherstellungscode
Beispielsweise aktualisiert „git checkout app/model/user.rb“ die Datei user.rb von der letzten übermittelten Version und alle Inhalte im nicht festgeschriebenen Arbeitsverzeichnis werden überschrieben.

3.10. Git-ls-Dateien
Überprüfen Sie, welche Dateien sich in der aktuellen Git-Bibliothek befinden.
3.11. Git mv
Eine Datei, ein Verzeichnis oder einen Link umbenennen.
Zum Beispiel: Git mv helloworld.c helloworld1.c (benennen Sie die Datei helloworld.c in helloworld1.c um)
3.12. Git-Zweig
3.12.1. Übersicht
Die Kosten für die Erstellung eines Zweigs in einem Git-Repository sind nahezu Null. Seien Sie also nicht geizig, wenn es darum geht, noch ein paar Zweige anzulegen. Wenn git init zum ersten Mal ausgeführt wird, erstellt das System einen Zweig mit dem Namen „master“. Andere Zweige werden manuell erstellt.
Hier sind einige gängige Verzweigungsstrategien:
Erstellen Sie Ihren eigenen persönlichen Arbeitszweig, um zu viele Eingriffe in den Hauptzweigmaster zu vermeiden und die Kommunikation und Zusammenarbeit mit anderen zu erleichtern.
Erstellen Sie bei Arbeiten mit hohem Risiko ein Experiment.
Beim Zusammenführen anderer Zweige Bei der Arbeit anderer ist es am besten, einen temporären Zweig für die Zusammenführung zu erstellen und ihn nach Abschluss der Zusammenführung in Ihren eigenen Zweig zu „holen“.
Führen Sie Vorgänge wie das Hinzufügen, Löschen und Überprüfen von Zweigen aus.
Hinweis: Zweiginformationen befinden sich im Allgemeinen im Verzeichnis .git/refs/, wobei das Verzeichnis „heads“ der lokale Zweig, „remotes“ der Zweig auf dem entsprechenden Server und „tags“ das Tag ist.
3.12.2. Zweige anzeigen
Git Branch listet alle Zweige im lokalen Git-Repository auf. Wenn unter den aufgelisteten Zweigen ein * vor dem Zweignamen steht, bedeutet dies, dass dieser Zweig der aktuelle Zweig ist.
git branch –r listet alle Zweige des Server-Git-Repositorys auf.
(Sie können weiterhin den Befehl „git checkout -b local branch name server branch name“ verwenden, um die Codedatei eines bestimmten Zweigs auf dem Server abzurufen.)
3.12.3. Überprüfen Sie, in welchem ​​Zweig Sie sich gerade befinden
cat .git/HEAD
3.12.4. Erstellen Sie einen Zweig
1) Git-Zweigzweigname
Obwohl der Zweig erstellt wird, wird der aktuelle Arbeitszweig nicht auf den umgestellt neu erstellt einen Zweig, daher benötigen Sie zum Wechseln auch den Befehl „git checkout branch name“,
2) git checkout -b branch name
erstellt nicht nur einen Zweig, sondern wechselt auch den aktuell funktionierenden Zweig zu diesem Zweig.
3.12.5. Wechseln Sie zu einem Zweig: git checkout branch name
Wechseln Sie zum Hauptzweig: git checkout master
3.12.6. Löschen Sie einen Zweig
git branch –D branch name
Hinweis: Nach dem Löschen werden alle Änderungen gelöscht, die in Dieser Zweig Änderungen können nicht rückgängig gemacht werden. Erzwingen Sie das Löschen dieses Zweigs.
3.12.7. Vergleichen Sie die Unterschiede zwischen Dateien in zwei Zweigen.
Git-Diff-Master-Zweigname (vergleichen Sie den Unterschied zwischen dem Hauptzweig und einem anderen Zweig).
3.12.8. Zeigen Sie den Zweigverlauf an Commit-Kommentare und Informationen)
git-show-branch -all (Commit-Kommentare und Informationen für alle Branches anzeigen) Zum Beispiel:
* [dev] d2
[master] m2
--
* [dev] d2
* [ dev ^] d1
* [dev~2] d0
*+ [master] m2
Im obigen Beispiel zeigen die beiden Zeilen über „--“ an, dass es zwei Zweige dev und master gibt und dass der letzte Commit auf dem dev erfolgt Zweig Das Protokoll ist „d2“ und das letzte festgeschriebene Protokoll im Hauptzweig ist „m2“.Die Zeilen unter „--“ stellen den Verlauf der Zweigentwicklung dar, wobei dev für den letzten Commit steht, der im Dev-Zweig stattgefunden hat, und dev^ für den vorletzten Commit, der im Dev-Zweig stattgefunden hat. dev~2 stellt den drittletzten Commit dar, der im Dev-Zweig stattgefunden hat.
3.12.9. Anzeigen des Vorgangsdatensatzes des aktuellen Zweigs
git whatchanged
3.12.10. Zweige zusammenführen
Methode 1:
git merge „Kommentar“ Zusammengeführter Zielzweig
Wenn beim Zusammenführen ein Konflikt auftritt, git wird Sie dazu auffordern.
Zum Beispiel: git checkout master (zum Master-Zweig wechseln)
git merge HEAD dev~2 (master branch und dev~2 branch zusammenführen) oder: git merge master dev~2
Methode 2:
git pull führt die Zielzweigquelle zusammen branch
Zum Beispiel: git checkout master (zum Master-Zweig wechseln)
git dev~2 (den aktuellen Zweig und den dev~2-Zweig zusammenführen)
3.13. Git Rebase
wird im Allgemeinen verwendet, wenn der neueste Inhalt des Servers zusammengeführt wird zum Lokalen, wie zum Beispiel: In Version C wird der Inhalt vom Server zum Lokalen abgerufen und der lokale Inhalt wird geändert. Zu diesem Zeitpunkt möchte ich den lokal geänderten Inhalt an den Server senden Die Version auf dem Server wurde in G geändert. Zu diesem Zeitpunkt muss ich zuerst Git Rebase ausführen und die neueste Version auf dem Server mit der lokalen Version zusammenführen. Zum Beispiel:
Die folgenden beiden Bilder verdeutlichen es genauer. Nachdem der Rebase-Befehl ausgeführt wurde, wird der Verzweigungspunkt tatsächlich von C nach G verschoben, sodass die Verzweigung auch die Funktion von C nach G hat.
Detaillierte Einführung in die Verwendung von Git[6]
3.14. Git-Reset
Neben dem Zurücksetzen einiger verlassener F&E-Codes spielt auch die Umkehrung und Wiederherstellung der Bibliothek eine wichtige Rolle. Beispielsweise klonen wir eine Codebasis aus der Ferne, entwickeln sie lokal und bereiten die Rückübertragung an die Ferne vor. Wenn jedoch die lokale Codebasis entwickelt wird, gibt es funktionale Commits, Commits für Sicherungszwecke usw. Kurz gesagt, das Festschreibungsprotokoll enthält viele nutzlose Protokolle, und wir möchten diese Protokolle nicht an die Bibliothek senden, wenn sie an die Fernbedienung zurückgesendet werden. Daher wird Git Reset verwendet.
Das Konzept des Git-Resets ist relativ komplex. Seine Befehlsform: git reset [--mixed |. --hard] []
Befehlsoptionen:
--mixed Dies ist die Standardoption. Zum Beispiel git reset [--mixed] dev^ (die Definition von dev^ finden Sie in 2.6.5). Seine Funktion besteht lediglich darin, den Zweigstatus auf dev1^ zurückzusetzen, ändert jedoch nicht den Inhalt von Arbeitsdateien. Das heißt, alle Dateiänderungen von dev1^ zu dev1 bleiben erhalten, aber alle Festschreibungsprotokolle zwischen dev1^ und dev1 werden gelöscht und der geänderte Dateiinhalt wird von git add nicht identifiziert. Wenn Sie erneut festschreiben möchten, müssen Sie dies auch tun Fügen Sie die geänderten Dateien mit einem Git hinzu. Auf diese Weise erhalten Sie nach dem Festschreiben einen sehr sauberen Festschreibungsdatensatz.(Der Inhalt im Index und im Warehouse wird zurückgesetzt) ​​
--soft entspricht dem Ausführen von „git reset –mixed“ und dem anschließenden Ausführen von „git add“ für die geänderten Dateien. Wenn diese Option verwendet wird, können Sie direkt festlegen. (Der Inhalt im Warehouse wird zurückgesetzt) ​​
Der Befehl --hard führt dazu, dass alle Informationen, einschließlich Dateiinhalte, zurückgesetzt werden. Es wird im Allgemeinen nur beim Zurücksetzen veralteten Codes verwendet. Nach der Ausführung kann der Dateiinhalt nicht wiederhergestellt werden. (Die Inhalte im Arbeitsverzeichnis, Index und Warehouse werden zurückgesetzt) ​​
Zum Beispiel:
Wechseln Sie zum verwendeten Zweig;
git reset HEAD^ Rollback des ersten Datensatzes
Git Reset HEAD~2 Rollback des zweiten Datensatzes
If If Wenn Sie die Dateien im Arbeitsverzeichnis zurücksetzen möchten, verwenden Sie git reset - - hard HEAD^, um den ersten Datensatz zurückzusetzen
git reset - - hard HEAD~2, um den zweiten Datensatz zurückzusetzen
Sie können auch die folgende Methode verwenden:
Das aktuelle Arbeitsverzeichnis wird vollständig auf die angegebene Versionsnummer zurückgesetzt. Gehen Sie davon aus, dass wir, wie unten gezeigt, fünf Versionen von A-G haben, darunter die Versionsnummer von C bbaf6fb5060b4875b18ff9ff637ce118256d6f20 0', dann das Ergebnis wird nur A-C sein. Drei eingereichte Versionen
Detaillierte Einführung in die Verwendung von Git[5]
3.15. Stellen Sie eine bestimmte Änderung an der Version wieder her, zum Beispiel: git revert commit_id (commit_id ist eine eindeutige Zeichenfolge, die beim Festschreiben des Codes generiert wird)
Zum Beispiel: (in 3.6) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (Führen Sie diesen Vorgang aus, um den letzten Commit-Vorgang wiederherzustellen)
3.16. Git config
Verwenden Sie diesen Befehl, um verschiedene Git-Einstellungen hinzuzufügen und zu ändern, z. B. „git config branch.master.remote origin“, um die Einstellungen des Masters zu ändern Das Repository ist auf einen Alias ​​namens „Origin-Repository“ festgelegt.
3.17. Git-Show
Verschiedene Arten von Objekten anzeigen.
3.18. Git-Tag
Erstellen, Auflisten, Löschen oder Überprüfen eines Tag-Objekts (signiert mit GPG).
Sie können eine bestimmte Version kennzeichnen, sodass Sie sich nicht die komplexe Hashwertzeichenfolge der Versionsnummer merken müssen. Sie können beispielsweise „git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20“ verwenden, um die von Ihnen wiederhergestellte Version zu markieren, und dann können Sie dies tun, wenn Sie möchten Um die Version zu überprüfen, können Sie anstelle des Hash-Werts den Tag-Namen „revert_version“ verwenden.

4. Git-Server-Betriebsbefehle (Interaktion mit dem Server)
4.1. Git-Klon
Nehmen Sie den Code des Server-Warehouses in ein lokal erstelltes Verzeichnis (Interaktion mit dem Server)
Nachdem Sie die Remote-Git-Bibliothek über Git-Klon erhalten haben, . git/config Die Entwicklerinformationen werden nicht zusammen geklont. Sie müssen noch Entwicklerinformationen zur .git/config-Datei der lokalen Bibliothek hinzufügen. Darüber hinaus müssen Entwickler selbst Gitignore-Dateien hinzufügen.
Die durch Git-Klon erhaltene Remote-Git-Bibliothek enthält nur den aktuellen Arbeitszweig der Remote-Git-Bibliothek. Wenn Sie andere Filialinformationen erhalten möchten, müssen Sie diese mit „git branch -r“ anzeigen. Wenn Sie andere Remote-Branch-Codes benötigen, können Sie den Befehl „git checkout -b local branch name remote branch name“ verwenden. , wobei der entfernte Zweig Der in „git branch -r“ aufgeführte Zweigname ist normalerweise so etwas wie „Ursprung/Zweigname“. Wenn der lokale Zweigname bereits vorhanden ist, ist der Parameter „-b“ nicht erforderlich.
Zum Beispiel:
Detaillierte Einführung in die Verwendung von Git[5]
4.2. Git-Pull
Holen Sie sich den Code aus dem Repository des Servers und führen Sie ihn mit dem lokalen Code zusammen. (Interagieren Sie mit dem Server und laden Sie den neuesten Code vom Server herunter, was äquivalent ist zu: Git fetch + Git merge)
Aktualisieren Sie den Code von anderen Repositorys (kann remote oder lokal sein) auf den lokalen Code, zum Beispiel: „git pull“ „Origin Master“ dient dazu, den Code des Ursprungs-Repositorys auf den lokalen Master-Zweig zu aktualisieren.
Git Pull kann den Inhalt eines bestimmten Zweigs aus jeder Git-Bibliothek abrufen. Die Verwendung ist wie folgt:
git pull username@ipaddr: Name des Remote-Repositorys, Name des Remote-Zweigs, Name des lokalen Zweigs. Dieser Befehl ruft den Remote-Branch-Namen des Remote-Git-Repositorys in einen lokalen Branch des lokalen Git-Repositorys ab. Wenn Sie unter anderem den lokalen Zweignamen nicht schreiben, wird dieser standardmäßig in den lokalen aktuellen Zweig gezogen.
Es ist zu beachten, dass Git Pull auch zum Zusammenführen von Zweigen verwendet werden kann. Es hat die gleiche Funktion wie Git Merge. Wenn Ihr lokaler Zweig bereits über Inhalte verfügt, führt Git Pull diese Dateien zusammen und benachrichtigt Sie, wenn Konflikte auftreten.
Zum Beispiel:
Detaillierte Einführung in die Verwendung von Git

Detaillierte Einführung in die Verwendung von Git

Detaillierte Einführung in die Verwendung von Git

Detaillierte Einführung in die Verwendung von Git
4.3. Git Push
Aktualisieren Sie den lokalen Commit-Code im Remote-Repository. Beispielsweise aktualisiert „git push origin“ den lokalen Code im Remote-Repository mit dem Namen orgin.
Git Push und Git Pull sind genau das Gegenteil. Sie dienen dazu, den Inhalt eines lokalen Zweigs an einen entfernten Zweig zu senden. Verwendung: git pushusername@ipaddr: Name des Remote-Repositorys, Name des lokalen Zweigs, Name des Remote-Zweigs . Dieser Befehl verschiebt einen lokalen Zweig des lokalen Git-Repositorys an den Namen des Remote-Zweigs des Remote-Git-Repositorys.
Es ist zu beachten, dass Git Push Dateien offenbar nicht automatisch zusammenführt. Wenn daher während des Git-Push ein Konflikt auftritt, wird dieser ohne Aufforderung zwangsweise durch den Inhalt der später gepushten Datei überschrieben. Dies ist eine sehr gefährliche Sache bei der gemeinsamen Entwicklung.
Zum Beispiel:
Detaillierte Einführung in die Verwendung von Git
4.4. Git-Abruf
Code aus dem Repository des Servers herunterladen. (Interagieren Sie mit dem Server und laden Sie den neuesten Code vom Server herunter.)
Dies entspricht dem Abrufen der neuesten Version vom Remote-Server auf den lokalen Server. Es wird nicht automatisch zusammengeführt und ist sicherer als Git-Pull.
Verwenden Sie diese Methode, um Updates auf dem Server abzurufen.
Zum Beispiel: Wenn Sie git checkout nov/eclair_rocket verwenden (nov/eclair_rocket ist der Filialname auf dem Server), erhalten Sie den Code, der vom Server heruntergeladen wurde, als Sie den Befehl git fetch zuletzt verwendet haben. Verwenden Sie dann git checkout nov /eclair_rocket, rufen Sie zunächst die neuesten Update-Informationen vom Server ab und laden Sie dann den neuesten Code vom Server herunter.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Verwendung von Git. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage