Heim > Java > javaLernprogramm > Hauptteil

Verschiedene Hinweise zur Verwendung von Git

高洛峰
Freigeben: 2017-02-09 09:31:40
Original
1058 Leute haben es durchsucht

Vorwort

Wenn Sie als Entwickler git nicht kennen oder git noch nicht nutzen können, dann sollten Sie darüber nachdenken. Lesen Sie selbst die Einführung. Heute stelle ich nur einige häufig verwendete Befehle vor, die ich git in meinem täglichen Leben verwende, und die Befehle, die meiner Meinung nach gut sind und die Effizienz unseres Büros verbessern können. Der Inhalt mag etwas chaotisch sein, aber es handelt sich definitiv um klassische Befehle. Ich mache mir hier Notizen und hoffe, dass sie denjenigen von Ihnen helfen können, die mich schätzen lernen.

Bereich

Davor stellen wir die drei Bereiche des git

  • Arbeitsverzeichnis (Arbeitsverzeichnis)

  • Staging-Bereich (Etappenindex)

  • Lokalgeschichtlicher Bereich (Geschichte)

Sie können es durch ein Bild verstehen Die Umrechnung zwischen ihnen erfolgt auf prägnante und leicht verständliche Weise.

git使用杂记

Klonen

Beginnen wir mit dem Befehl

. Jeder, der clone verwendet hat, weiß es. git Befehl zum Pullen des Remote-Repositorys auf lokal. Aber wenn wir es in den angegebenen Ordner ziehen möchten, können Sie es direkt git colne tun. Tatsächlich ist es nicht nötig, dies zu tun, ein Befehl kann es tun mkdir, es ist so einfach. git clone 远程仓库 文件名

rm

Eine solche Situation kann bei der Arbeit auftreten. Wir verwenden

, um alle geänderten Dateien im Arbeitsbereich direkt zum temporären Speicherbereich hinzuzufügen, aber später stellen wir fest, dass dies der Fall ist Fügen Sie zunächst keine Datei hinzu. Zu diesem Zeitpunkt können wir den folgenden Befehl verwenden, um die Datei in den Arbeitsbereich zurückzugeben. git add .

git rm --cached <file>
Nach dem Login kopieren
Nach dem Login kopieren
stash

Während der Entwicklung kommt es zu einem Online-Notfall

, der behoben werden muss, und die in der Entwicklung befindliche Funktion ist zu diesem Zeitpunkt noch nicht abgeschlossen Wenn Sie nicht senden möchten, können Sie alle Dateien mit bug im Arbeitsbereich speichern. Zu diesem Zeitpunkt können Sie den Zweig sicher abschneiden und reparieren git stash. Nachdem die Reparatur abgeschlossen ist, führen Sie bug aus, um die zuvor gespeicherten Befehle zu entfernen, wie zum Beispiel: git stash pop Sehen Sie sich die gespeicherten Datensätze an, git stash listGespeicherte Datensätze verwerfen. git stash drop

Tag

Vielleicht müssen wir während der Entwicklung ein Tag

erstellen und das entsprechende Tag in das Remote-Warehouse übertragen. In diesem Fall können Sie den folgenden Befehl zum Pushen verwenden. git tag tagName

git push --tags tagName
Nach dem Login kopieren
Nach dem Login kopieren
Ändern

Nachdem Sie

ausgeführt haben, stellen Sie fest, dass eine Datei nicht zum letzten commit hinzugefügt wurde oder dass einige Dateien geändert wurden. Sie möchten zu diesem Zeitpunkt keine neuen commit Informationen hinzufügen, sondern diese nur zu den letzten commit hinzufügen. Zu diesem Zeitpunkt können Sie commit

git commit --amend <file>
Nach dem Login kopieren
Nach dem Login kopieren
verwenden, um Dateien zum temporären Speicherbereich hinzuzufügen, und Sie können zu diesem Zeitpunkt auch die

-Informationen ändern. commit

Zurücksetzen

kann auch den Effekt des vorherigen reset erzielen. Sie können den folgenden Befehl verwenden, um den vorherigen rm-Befehl git rm --cached <file>

aber
git reset HEAD <file>
Nach dem Login kopieren
Nach dem Login kopieren
hat einen breiteren Anwendungsbereich. In Kombination mit dem

-Parameter können Sie zu jedem reset-Knoten zurückkehren. softcommit

Nachdem Sie diesen Befehl ausgeführt haben, kehren Sie zu zurück der
git reset --soft index
Nach dem Login kopieren
Nach dem Login kopieren
-Speicherort und der Arbeitsbereich bleibt unverändert. Der temporäre Speicherbereich kehrt zum aktuellen

-Speicherort zurück. Es gibt auch einen index-Parameter. Man kann sagen, dass indexhard

und
git reset --hard index
Nach dem Login kopieren
Nach dem Login kopieren
Gegensätze sind. Ihre Wirkung liegt in der Differenz zwischen dem Arbeitsbereich und dem temporären Speicherbereich.

softrebase

für

bedeutet Umleitung. Wenn es einen Unterschied in den Informationen zwischen Ihrem aktuellen Zweig und dem entfernten Zweig

gibt, werden Sie daran erinnert, dass Sie zu diesem Zeitpunkt nicht fortfahren können rebase , Sie müssen zuerst die Remote-commit Informationen auf die lokale übertragen, bevor Sie sie übermitteln können. In diesem Fall können Sie den Befehl push verwenden. Wie unten gezeigt, befinden wir uns derzeit im Zweig commitrebasedevelop

. Zu diesem Zeitpunkt sollten wir zuerst den Befehl git使用杂记

und dann schließlich rebase Zur Fernbedienung

git fetch
git rebase origin/master
Nach dem Login kopieren
Nach dem Login kopieren

push Die endgültige Situation jedes Zweigs ist wie im Bild oben dargestellt. Wenn Sie Schwierigkeiten haben, sich den Befehl zu merken, können Sie auch einen einzigen Befehl verwenden, um den oben genannten Effekt zu erzielen master

git push origin master
Nach dem Login kopieren
Nach dem Login kopieren
Dies ist eine einfache Anwendung von

und es ist auch ein allgemeiner Befehl. Nachfolgend wird ein optionaler Parameter

von
git pull --rebase origin master
Nach dem Login kopieren
Nach dem Login kopieren
vorgestellt.

rebase--ontorebase--onto Verwendungsszenario: Während des Entwicklungsprozesses erstellen wir verschiedene Zweige, um verschiedene Funktionen zu entwickeln. Wenn Sie einen neuen Zweig

im Zweig

für die Entwicklung erstellen Funktion und auch einige

übermittelt, zu diesem Zeitpunkt stellen Sie fest, dass es ein falsches

im ursprünglichen A-Zweig gibt. Wenn Sie B zu commit hinzugefügt werden möchten, können Sie dieses falsche auch überlegen. Dies ist die Zeit, A Ihre magischen Kräfte zur Schau zu stellen. commit

git使用杂记

当前处在B分支,要得到上面的结果,只需执行如下命令

git rebase --onto master <b的commit hash code> B
Nach dem Login kopieren
Nach dem Login kopieren

这个不仅可以针对不同的分支,也能作用于同一个分支上。所以针对上面的情况可以只对分支B进行操作,等价命令如下:

git rebase --onto <a的commit hash code> <b的commit hash code> B
Nach dem Login kopieren
Nach dem Login kopieren

--interactive

当我们要修改commit信息的名称时,如果要修改的commit处在第一个时,可以使用

git commit --amend
Nach dem Login kopieren
Nach dem Login kopieren

如果不是第一个时,我们就要使用到rebase--interactive可选参数了,可以简写为-i

git rebase -i <commit hash code>
Nach dem Login kopieren
Nach dem Login kopieren

参数后面的commit hash code为需要修改的commit的前一个。执行之后就会出现如下类似的信息:

pick 137cf0a First coommit
pick 163dc38 Second commit

# Rebase f9aee6e..163dc38 onto f9aee6e (2 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
Nach dem Login kopieren
Nach dem Login kopieren

根据提示我们可以有6个可选择的操作。相信提示已经说的很明显了,对于我们这种要修改First coommit的情况,需要使用r

r 137cf0a First commit
pick 163dc38 Second commit
Nach dem Login kopieren
Nach dem Login kopieren

执行之后会跳到修该First coomit的界面,进行修改即可。

First commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Thu Jan 26 23:07:10 2017 +0800
#
# rebase in progress; onto f9aee6e
# You are currently editing a commit while rebasing branch 'master' on 'f9aee6e'.
#
# Changes to be committed:
#       new file:   file1
Nach dem Login kopieren
Nach dem Login kopieren

至于其他的操作项,有兴趣的可以自己去尝试一下。例如s操作就可以用来合并commit

branch

相信branch都很熟悉,我这里要说的是他的另一种可能会用到的情况。场景是这样的:如果在你进行创建新的分支时,并不想从当前的commit信息节点进行创建分支。

git使用杂记

要实现如上效果只需在创建分支时在后面再添加额外的参数,该参数就是你所需调到的commit节点的hash code

git branch new_branch <commit hash code>
Nach dem Login kopieren
Nach dem Login kopieren

push

这里提一下push--set-upstream,它的效果是设置上游分支,当我们将远程不存在的本地分支推送到远程时,如果不在推送的分支上,我们一般会使用如下命令进行推送。

git checkout push_branch
git push origin push_branch
Nach dem Login kopieren
Nach dem Login kopieren

下面是简洁的方法,使用该参数无需切换分支,可以直接使用如下命令进行推送。

git push --set-upstream origin push_branch
Nach dem Login kopieren
Nach dem Login kopieren

cherry-pick

这个命令的场景是:当你所在的分支没用,你要删除它,但其中的一个commit你还是想推送到远程master上。

git使用杂记

将分支切换到master,执行以下命令:

git cherry-pick <b的 commit hash code>
Nach dem Login kopieren
Nach dem Login kopieren

merge

我们所熟知的是使用merge来进行分支的合并,每次使用merge时都会自动将副分支合并成一个commit进行推送到主分支上,那么如果我不想它自动推送到主分支上时(可能我还需要进行修改),这时就可以使用--squash操作

git merge --squash dev_branch
Nach dem Login kopieren
Nach dem Login kopieren

执行完以上命令后,我们就可以在暂存区看到一个还未提交的文件状态。

reflog

当我们切分支太频繁了之后,可能会忘了一些分支是从哪个分支切过来的,此时可以使用如下命令查看:

git reflog
Nach dem Login kopieren
Nach dem Login kopieren
894a16d HEAD@{0}: commit: commit another todo
6876e5b HEAD@{1}: checkout: moving from solve_world_hunger to kill_the_batman
324336a HEAD@{2}: commit: commit todo
6876e5b HEAD@{3}: checkout: moving from blowup_sun_for_ransom to solve_world_hunger
6876e5b HEAD@{4}: checkout: moving from kill_the_batman to blowup_sun_for_ransom
6876e5b HEAD@{5}: checkout: moving from cure_common_cold to kill_the_batman
6876e5b HEAD@{6}: commit (initial): initial commit
Nach dem Login kopieren
Nach dem Login kopieren

这样我们就可以看到所用的操作历史了。这样如果我们使用git reset命令不小心删除了需要的东西。可以通过此来查找到删除操作的hash code,之后就可以通过如下命令进行恢复。

git checkout <hash code>
Nach dem Login kopieren
Nach dem Login kopieren

目前想到的就这些了,希望能有所帮助

个人博客:http://www.php.cn/

前言

作为一个开发者,如果现在还不知道git或者还不会使用git,那么你应该好好的反省。自己去好好看一遍的入门介绍吧。今天只是对自己在日常中使用git的一些常用命令的介绍与自己认为不错且能提高我们办公效率的命令。内容可能会有点杂乱,但绝对都是经典的命令,在此记下笔记,也希望能帮助来赏脸关顾的你们。

区域

在这之前,来介绍一下git的三个区域

  • 工作区(working directory)

  • 暂存区(stage index)

  • 本地历史区(history)

通过一张图就能简洁易懂的明白它们之间的转化。

git使用杂记

Klonen

wird zuerst mit dem Befehl clone eingeführt. Jeder, der git verwendet hat, wird es wissen. git colne Befehl zum Pullen des Remote-Repositorys auf lokal. Aber wenn wir es in den angegebenen Ordner ziehen möchten, können Sie es direkt mkdir tun. Tatsächlich ist es nicht nötig, dies zu tun, ein Befehl kann es tun git clone 远程仓库 文件名, es ist so einfach.

rm

Eine solche Situation kann bei der Arbeit auftreten. Wir verwenden git add ., um alle geänderten Dateien im Arbeitsbereich direkt zum temporären Speicherbereich hinzuzufügen, aber später stellen wir fest, dass dies der Fall ist Fügen Sie zunächst keine Datei hinzu. Zu diesem Zeitpunkt können wir den folgenden Befehl verwenden, um die Datei in den Arbeitsbereich zurückzugeben.

git rm --cached <file>
Nach dem Login kopieren
Nach dem Login kopieren

stash

Während der Entwicklung kommt es zu einem Online-Notfall bug, der behoben werden muss, und die in der Entwicklung befindliche Funktion ist zu diesem Zeitpunkt noch nicht abgeschlossen Wenn Sie nicht senden möchten, können Sie alle Dateien mit git stash im Arbeitsbereich speichern. Zu diesem Zeitpunkt können Sie den Zweig sicher abschneiden und reparieren bug. Nachdem die Reparatur abgeschlossen ist, führen Sie git stash pop aus, um die zuvor gespeicherten Befehle zu entfernen, wie zum Beispiel: git stash list Sehen Sie sich die gespeicherten Datensätze an, git stash dropGespeicherte Datensätze verwerfen.

Tag

Vielleicht müssen wir während der Entwicklung ein Tag git tag tagName erstellen und das entsprechende Tag in das Remote-Warehouse übertragen. In diesem Fall können Sie den folgenden Befehl zum Pushen verwenden.

git push --tags tagName
Nach dem Login kopieren
Nach dem Login kopieren

Ändern

Nachdem Sie commit ausgeführt haben, stellen Sie fest, dass eine Datei nicht zum letzten commit hinzugefügt wurde oder dass einige Dateien geändert wurden. Sie möchten zu diesem Zeitpunkt keine neuen commit Informationen hinzufügen, sondern diese nur zu den letzten commit hinzufügen. Zu diesem Zeitpunkt können Sie

git commit --amend <file>
Nach dem Login kopieren
Nach dem Login kopieren

verwenden, um Dateien zum temporären Speicherbereich hinzuzufügen, und Sie können zu diesem Zeitpunkt auch die commit-Informationen ändern.

Zurücksetzen

reset kann auch den Effekt des vorherigen rm erzielen. Sie können den folgenden Befehl verwenden, um den vorherigen git rm --cached <file>-Befehl

git reset HEAD <file>
Nach dem Login kopieren
Nach dem Login kopieren
aber

hat einen breiteren Anwendungsbereich. In Kombination mit dem reset-Parameter können Sie zu jedem soft-Knoten zurückkehren. commit

git reset --soft index
Nach dem Login kopieren
Nach dem Login kopieren
Nachdem Sie diesen Befehl ausgeführt haben, kehren Sie zu zurück der

-Speicherort und der Arbeitsbereich bleibt unverändert. Der temporäre Speicherbereich kehrt zum aktuellen index-Speicherort zurück. Es gibt auch einen index-Parameter. Man kann sagen, dass hard

git reset --hard index
Nach dem Login kopieren
Nach dem Login kopieren
und

Gegensätze sind. Ihre Wirkung liegt in der Differenz zwischen dem Arbeitsbereich und dem temporären Speicherbereich. soft

rebase

für

bedeutet Umleitung. Wenn es einen Unterschied in den Informationen zwischen Ihrem aktuellen Zweig und dem entfernten Zweig rebase gibt, werden Sie daran erinnert, dass Sie zu diesem Zeitpunkt nicht fortfahren können commit , Sie müssen zuerst die Remote-push Informationen auf die lokale übertragen, bevor Sie sie übermitteln können. In diesem Fall können Sie den Befehl commit verwenden. Wie unten gezeigt, befinden wir uns derzeit im Zweig rebasedevelop

git使用杂记 . Zu diesem Zeitpunkt sollten wir zuerst den Befehl

rebase und dann schließlich

Zur Fernbedienung
git fetch
git rebase origin/master
Nach dem Login kopieren
Nach dem Login kopieren

pushmaster Die endgültige Situation jedes Zweigs ist wie im Bild oben dargestellt. Wenn Sie Schwierigkeiten haben, sich den Befehl zu merken, können Sie auch einen einzigen Befehl verwenden, um den oben genannten Effekt zu erzielen

git push origin master
Nach dem Login kopieren
Nach dem Login kopieren

Dies ist eine einfache Anwendung von

und es ist auch ein allgemeiner Befehl. Nachfolgend wird ein optionaler Parameter
git pull --rebase origin master
Nach dem Login kopieren
Nach dem Login kopieren
von

vorgestellt. rebaserebase--onto--onto

Verwendungsszenario: Während des Entwicklungsprozesses erstellen wir verschiedene Zweige, um verschiedene Funktionen zu entwickeln. Wenn Sie einen neuen Zweig

im Zweig

für die Entwicklung erstellen Funktion und auch einige

übermittelt, zu diesem Zeitpunkt stellen Sie fest, dass es ein falsches A im ursprünglichen B-Zweig gibt. Wenn Sie commit zu A hinzugefügt werden möchten, können Sie dieses falsche auch überlegen. Dies ist die Zeit, commit Ihre magischen Kräfte zur Schau zu stellen. rebasemastercommit--onto

befindet sich derzeit im Zweig

Um die oben genannten Ergebnisse zu erhalten, führen Sie einfach den folgenden Befehl aus: git使用杂记

Dies kann nicht nur auf andere zielen Zweige können auch auf denselben Zweig wirken. Daher können wir in der oben genannten Situation nur den Zweig B bearbeiten. Der entsprechende Befehl lautet wie folgt:

git rebase --onto master <b的commit hash code> B
Nach dem Login kopieren
Nach dem Login kopieren

--interactiveB

Wenn wir den Namen ändern möchten der
git rebase --onto <a的commit hash code> <b的commit hash code> B
Nach dem Login kopieren
Nach dem Login kopieren
-Informationen: Wenn das zu ändernde

das erste ist, können Sie

commit verwenden. Wenn es nicht das erste ist, müssen wir das optionale commit verwenden Parameter von

Das ist in Ordnung. Die Abkürzung ist
git commit --amend
Nach dem Login kopieren
Nach dem Login kopieren
. Der

nach dem rebase--interactive-i-Parameter ist derjenige vor dem

, der geändert werden muss. Nach der Ausführung erscheint eine Meldung ähnlich der folgenden:
git rebase -i <commit hash code>
Nach dem Login kopieren
Nach dem Login kopieren
pick 137cf0a First coommit
pick 163dc38 Second commit

# Rebase f9aee6e..163dc38 onto f9aee6e (2 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
Nach dem Login kopieren
Nach dem Login kopieren

根据提示我们可以有6个可选择的操作。相信提示已经说的很明显了,对于我们这种要修改First coommit的情况,需要使用r

r 137cf0a First commit
pick 163dc38 Second commit
Nach dem Login kopieren
Nach dem Login kopieren

执行之后会跳到修该First coomit的界面,进行修改即可。

First commit

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Thu Jan 26 23:07:10 2017 +0800
#
# rebase in progress; onto f9aee6e
# You are currently editing a commit while rebasing branch 'master' on 'f9aee6e'.
#
# Changes to be committed:
#       new file:   file1
Nach dem Login kopieren
Nach dem Login kopieren

至于其他的操作项,有兴趣的可以自己去尝试一下。例如s操作就可以用来合并commit

branch

相信branch都很熟悉,我这里要说的是他的另一种可能会用到的情况。场景是这样的:如果在你进行创建新的分支时,并不想从当前的commit信息节点进行创建分支。

git使用杂记

要实现如上效果只需在创建分支时在后面再添加额外的参数,该参数就是你所需调到的commit节点的hash code

git branch new_branch <commit hash code>
Nach dem Login kopieren
Nach dem Login kopieren

push

这里提一下push--set-upstream,它的效果是设置上游分支,当我们将远程不存在的本地分支推送到远程时,如果不在推送的分支上,我们一般会使用如下命令进行推送。

git checkout push_branch
git push origin push_branch
Nach dem Login kopieren
Nach dem Login kopieren

下面是简洁的方法,使用该参数无需切换分支,可以直接使用如下命令进行推送。

git push --set-upstream origin push_branch
Nach dem Login kopieren
Nach dem Login kopieren

cherry-pick

这个命令的场景是:当你所在的分支没用,你要删除它,但其中的一个commit你还是想推送到远程master上。

git使用杂记

将分支切换到master,执行以下命令:

git cherry-pick <b的 commit hash code>
Nach dem Login kopieren
Nach dem Login kopieren

merge

我们所熟知的是使用merge来进行分支的合并,每次使用merge时都会自动将副分支合并成一个commit进行推送到主分支上,那么如果我不想它自动推送到主分支上时(可能我还需要进行修改),这时就可以使用--squash操作

git merge --squash dev_branch
Nach dem Login kopieren
Nach dem Login kopieren

执行完以上命令后,我们就可以在暂存区看到一个还未提交的文件状态。

reflog

当我们切分支太频繁了之后,可能会忘了一些分支是从哪个分支切过来的,此时可以使用如下命令查看:

git reflog
Nach dem Login kopieren
Nach dem Login kopieren
894a16d HEAD@{0}: commit: commit another todo
6876e5b HEAD@{1}: checkout: moving from solve_world_hunger to kill_the_batman
324336a HEAD@{2}: commit: commit todo
6876e5b HEAD@{3}: checkout: moving from blowup_sun_for_ransom to solve_world_hunger
6876e5b HEAD@{4}: checkout: moving from kill_the_batman to blowup_sun_for_ransom
6876e5b HEAD@{5}: checkout: moving from cure_common_cold to kill_the_batman
6876e5b HEAD@{6}: commit (initial): initial commit
Nach dem Login kopieren
Nach dem Login kopieren

这样我们就可以看到所用的操作历史了。这样如果我们使用git reset命令不小心删除了需要的东西。可以通过此来查找到删除操作的hash code,之后就可以通过如下命令进行恢复。

git checkout <hash code>
Nach dem Login kopieren
Nach dem Login kopieren

目前想到的就这些了,希望能有所帮助

更多git使用杂记 相关文章请关注PHP中文网!

Verwandte Etiketten:
git
Quelle:php.cn
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