Git-Studiennotizen | Versionsverwaltung – Zweigstellenverwaltung

Git-Studiennotizen

Studienartikel 1
Studienartikel 2
Studienartikel 3

Was ist Git?

Git ist ein verteiltes Open-Source-Versionskontrollsystem. Die Versionskontrolle ist ein System, das Änderungen im Dateiinhalt aufzeichnet und Revisionen bestimmter Versionen konsultiert.

Lagerhaus

Aussage 1
Fügen Sie hier eine Bildbeschreibung ein

Aussage 2Fügen Sie hier eine Bildbeschreibung ein

Obwohl es zwei Versionen gibt, ist die allgemeine Bedeutung dieselbe: Die ersten drei Bereiche sind alle lokal, nur das Remote-Warehouse ist nicht lokal.

Lokales Lager = Arbeitsbereich + Versionsbereich

  • Arbeitsbereich: Eine Sammlung von Dateien auf einer lokalen Festplatte
  • Der Versionsbereich (Versionsbibliothek) ist .giteine Datei. git initDies bedeutet, dass eine .gitDatei im lokalen Bereich erstellt wird, dh ein Versionsbereich erstellt wird

Versionsbereich = Zwischenlagerbereich + Lagerbereich

  • Temporärer Speicherbereich: Dateien .gitim Verzeichnis , über die die Workspace-Dateien zum temporären Speicherbereich hinzugefügt werden könnenindexgit add
  • Lagerbereich: git commitDateien im Zwischenspeicherbereich können an den Lagerbereich übermittelt werden, um eine historische Version zu erstellen

Häufige Prozessfälle

  1. git initInitialisieren Sie diese Datei und verwandeln Sie sie in ein Repository, das Git verwalten kann. Öffnen Sie nach der Initialisierung die versteckte Datei und Sie können sehen, dass eine .gitDatei vorhanden ist.
  2. git add .Senden Sie die gesamte Datei an den Staging-Bereich.
  3. git commit -m "评论"Senden Sie alle Dateien im temporären Speicherbereich an das lokale Lager.
  4. git remote add origin 仓库地址Verbinden Sie das lokale Repository mit dem Remote-Repository auf GitHub. Einfach einmal anschließen und jederzeit nutzen.
  5. git push -u origin masterÜbermitteln Sie das lokale Lager an das Remote-Lager.

allgemeine Befehle

Anweisung beschreiben Gemeinsame Nutzung
Git hinzufügen Fügen Sie Dateien in diesem Bereich zum temporären Speicherbereich hinzu, der wie der temporäre Speicherbereich mehrmals hinzugefügt werden kann Dateien zum temporären Speicherbereich hinzufügen: git add 文件名
Alle Dateien zum temporären Speicherbereich hinzufügen: git add .
Geänderte Dateien zum temporären Speicherbereich hinzufügen: git add -A
Dateien im temporären Speicherbereich löschen:git rm --cached 文件名
Git-Commit Senden Sie alle Dateien im temporären Speicherbereich an den Lagerbereich, um eine historische Version zu erstellen Dateien einreichen: git commit -m ”版本日志信息" 文件名
Alle Dateien einreichen:git commit -m ”版本日志信息”
Git-Status Den Status des Lagerbereichs (örtliche Bibliothek) anzeigen Die rote Datei wurde nicht zum temporären Speicherbereich hinzugefügt und die grüne Datei wurde zum temporären Speicherbereich hinzugefügt
git show commit hash value Zeigen Sie den geänderten Inhalt eines Commits an
  • git commit --amendDrücken Sie die Eingabetaste, um die letzten Commit-Informationen zu ändern. Nach dem Push wird kein neuer Commit-Datensatz hinzugefügt, aber der Hash dieses Commits wird geändert (dies kann als Löschen des letzten Commits und erneutes Senden verstanden werden).
  • git commit -m "msg" --no-verify Commit erzwingen, ohne es zu überprüfen

Commit-Kommentarspezifikation

Anfang Anmerkung
Kunststück: Neue Funktionen, neue Features
Fix: Fehler ändern
perf: Ändern Sie den Code, um die Leistung zu verbessern (optimieren Sie die Leistung des Programms, ohne das interne Verhalten des Codes zu beeinträchtigen).
Refaktor: Code-Refactoring (Refactoring, Code-Änderung ohne Auswirkungen auf das interne Verhalten und die Funktionen des Codes)
Dokumente: Dokumentänderung
Stil: Beachten Sie, dass es sich bei der Änderung des Codeformats nicht um eine CSS-Änderung handelt (z. B. eine Semikolon-Änderung).
prüfen: Testfälle hinzufügen und ändern
bauen: Wirkt sich auf die Projekterstellung oder Abhängigkeitsänderung aus
zurückkehren: Kehren Sie zum letzten Commit zurück
ci: Kontinuierliche Dateiänderung im Zusammenhang mit der Integration
Aufgabe: Sonstige Modifikationen (Modifikationen, die nicht in die oben genannten Kategorien fallen)
freigeben: eine neue Version veröffentlichen
Arbeitsablauf: Workflowbezogene Dateiänderung

Legen Sie die Git-Ignorierdatei unter file.gitignore fest

Welche Dateien werden ignoriert?
Am Beispiel des Vue-Projekts muss das von node_modules heruntergeladene Abhängigkeitspaket nicht hochgeladen werden, da die Datei zu groß ist und eine Paketverwaltungsdatei vorhanden ist. Sie können die Paketverwaltungsdatei verwenden, um Abhängigkeiten erneut herunterzuladen package.json.
Ignorieren Sie einige, die nichts mit der eigentlichen Funktion des Projekts zu tun haben, z. B. das .vscodeWarten auf IDE-Dateien.
Zweck
1. Die Unterschiede zwischen IDE-Tools abschirmen.
2. Dateien so klein wie möglich hochladen, damit andere sie schneller herunterladen und eine bessere bereitstellen können Erfahrung

So ignorieren Sie
1. Erstellen Sie eine Ignorierregeldatei xxx.ignore. Der Vorschlag besteht darin, den Verweis auf die Datei (in .git) git.ignore
zu erleichtern ~/.gitconfig. Es wird empfohlen, sie im selben Verzeichnis abzulegen, oder Sie können sie direkt ändern~/.gitconfig

git.ignore-Dateivorlage, nehmen Sie das Vue-Projekt als Beispiel

.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln

.gitconfigzitiert in

// 注意斜线的方向
 excludesfile = 绝对路径/git.ignore

Versionsverwaltung

Nachdem ich einen sehr interessanten Artikel gelesen habe, denke ich, dass er aus Gründen der Versionskontrolle hilfreich ist: Git-Änderung rückgängig machen, Git-Checkout-Datei verwenden, Git-Reset-HEAD-Datei verwenden

git log | git reflog Commit-Protokoll/historische Version anzeigen

Bei Steuerungsmethode für die Mehrbildschirmanzeige: Leertaste zum Umblättern der Seite nach unten, b Umblättern nach oben, q Beenden

Vollständigen Versionsverlauf anzeigen:git log

D:\work_code\demo\vue3_test>git log
commit eca39ce053d6a6c7650c10c6ab80d174cbbe3fcd (HEAD -> master)
Author: Ranan <ranan>
Date:   Fri Aug 25 19:20:25 2023 +0800

    modify

commit 36d5ec0bfa96ba0beb59e765de03024f383c9ae9
Author: Ranan <ranan>
Date:   Fri Aug 25 18:44:37 2023 +0800

    init

Zu den zurückgegebenen Informationen gehören Commit-UUID( commit 完整版本号), aktueller Zweig, Autor, Protokoll und Beschreibungsinformationen.

Gekürzten Versionsverlauf anzeigen:git reflog

HEAD@{Wie viele Schritte müssen zur aktuellen Version verschoben werden}, die Zahl davor gibt den Hashwert dieser Version an.

D:\work_code\demo\vue3_test>git reflog
eca39ce (HEAD -> master) HEAD@{
    
    0}: commit: modify
36d5ec0 HEAD@{
    
    1}: commit (initial): init

Der Unterschied
git reflog zeichnet jeden Befehl auf und Sie können alle Betriebsaufzeichnungen aller Zweige anzeigen.
git logVersionen, die nach der Backtracking-Version festgeschrieben wurden, werden weder angezeigt, noch können Sie gelöschte Datensätze anzeigen.

Version Shuttle Git Reset

Essenz: Betätigen Sie den HEAD-Zeiger. Der HEAD-Zeiger ist standardmäßig auf die neueste Version eingestellt.
Befehl: git reset 强度 局部hash(empfohlene Verwendung)

Stärke Wiederherstellung des Kopfzeigers Der Cache-Bereich, der hinzugefügt wurde Arbeitsbereichscode beschreiben
--soft commithash nicht verloren Konstante Führen Sie vom Commit nach dem Commithash einen Rollback zum Staging-Bereich durch
--mixed commithash verloren Konstante
--hard commithash verloren Zurück zur Shuttle-Version

Wenn Sie git resetzur alten Version wechseln, git pushwird bei der Verwendung ein Fehler gemeldet, da HEADdie Version, auf die das lokale Repository verweist, älter ist als die Version des Remote-Repositorys.
Lösung: git push -fPush erzwingen, und alle neuen Versionen nach dieser Version verschwinden.

Häufige Verwendungsszenarien
Nach dem Ausführen des Commits und vor dem Ausführen des Pushs möchten Sie dieses Commit rückgängig machen:git reset --soft HEAD^

andere Verwendung

git reset --hard head #当前版本
git reset --hard HEAD^ #回退到上一个版本
git reset --hard HEAD^^ #回退到上上一个版本
git reset --hard HEAD~3 #回退到往上3个版本
git reset --hard HEAD~10 #回退到往上10个版本

Anwendungsfälle

Verwenden Sie zuerst git reflog, um die Version der lokalen Bibliothek und den entsprechenden lokalen hashWert anzuzeigen, und verwenden Sie dann git reset --hard 局部hashdie Backtracking-Version

// 案例: 回到版本36d5ec0 
D:\work_code\demo\vue3_test>git reset --hard 36d5ec0
HEAD is now at 36d5ec0 init

D:\work_code\demo\vue3_test>git reflog
36d5ec0 (HEAD -> master) HEAD@{
    
    0}: reset: moving to 36d5ec0
eca39ce HEAD@{
    
    1}: commit: modify
36d5ec0 (HEAD -> master) HEAD@{
    
    2}: commit (initial): init

D:\work_code\demo\vue3_test>git log
commit 36d5ec0bfa96ba0beb59e765de03024f383c9ae9 (HEAD -> master)
Author: Ranan <ranan>
Date:   Fri Aug 25 18:44:37 2023 +0800

    init

Version vorwärts

// 案例: 前进到modify版本

D:\work_code\demo\vue3_test>git reset --hard eca39ce
HEAD is now at eca39ce modify

D:\work_code\demo\vue3_test>git reflog
eca39ce (HEAD -> master) HEAD@{
    
    0}: reset: moving to eca39ce
36d5ec0 HEAD@{
    
    1}: reset: moving to 36d5ec0
eca39ce (HEAD -> master) HEAD@{
    
    2}: commit: modify
36d5ec0 HEAD@{
    
    3}: commit (initial): init

D:\work_code\demo\vue3_test>git log
commit eca39ce053d6a6c7650c10c6ab80d174cbbe3fcd (HEAD -> master)
Author: Author: Ranan <ranan>
Date:   Fri Aug 25 19:20:25 2023 +0800

    modify

commit 36d5ec0bfa96ba0beb59e765de03024f383c9ae9
Author: Author: Ranan <ranan>
Date:   Fri Aug 25 18:44:37 2023 +0800

    init

git reset HEAD

Befehl: git reset HEAD <file>
Beschreibung: Ziehen Sie die zuletzt an das Repository übermittelte Datei in den temporären Speicherbereich, ohne dass sich dies auf den Arbeitsbereich auswirkt

Ziehen Sie die Datei aus dem Repository in den Staging-Bereich . Wenn wir eine Datei im Arbeitsbereich durcheinander bringen, können wir mit diesem Befehl die Datei mit demselben Namen im Repository in den temporären Speicherbereich ziehen und sie dann wieder in den Arbeitsbereich zurückziehen.

Hier ist HEAD der Versionszeiger und kann auch der Hashwert anderer Versionsadressen sein.

// 1.工作区修改age为15 add src/App.vue 文件进暂存区
D:\work_code\demo\vue3_test>git add -A

Fügen Sie hier eine Bildbeschreibung ein

// 2.将仓库区最新版本的该文件拉到暂存区,不影响工作区age还是15
D:\work_code\demo\vue3_test>git reset HEAD src/App.vue
Unstaged changes after reset:
M       src/App.vue

Fügen Sie hier eine Bildbeschreibung ein

todo Es fühlt sich git rm --cached 文件名sehr ähnlich an wie das Löschen der Dateien im temporären Speicherbereich. Der Unterschied zwischen ihnen ist beim Lesen des Artikels vorerst nicht spürbar. Er wird nach der Anhäufung von Arbeit aktualisiert.

git checkout – fileName Verwirft Arbeitsbereichsänderungen

Befehl: git checkout -- fileNameÄnderung des angegebenen Dateiarbeitsbereichs abbrechen | git checkout .Änderung aller Dateien im Arbeitsbereich abbrechen
Erläuterung: Es ist verständlich, den Inhalt des Hinzufügens (basierend auf dem letzten Hinzufügen) abzubrechen und alle Änderungen der Datei im Arbeitsbereich abzubrechen (Es gibt keine Möglichkeit, es wiederherzustellen!)

Fallbeschreibung
1. Nach dem Hinzufügen (z. B. einem) wird der Arbeitsbereichscode geändert (zwei hinzufügen) und der git checkout -- fileNameWiederherstellungsbefehl wird verwendet, um den Arbeitsbereichscode aus dem temporären Speicherbereich abzurufen (nur einer).
2. Zuerst hinzufügen und dann festschreiben ( z. B. eins), Arbeitsbereichscodeänderung (zwei hinzufügen), git checkout -- fileNameden Wiederherstellungsbefehl verwenden, der Arbeitsbereich wird aus dem Lagerbereich wiederhergestellt (nur einer)

Es gibt eine Debatte darüber, ob aus dem Bereitstellungsbereich oder dem Lagerbereich gezogen werden soll. Mein vorübergehendes Verständnis besteht darin, zuerst zum temporären Lagerbereich und dann zum Lagerbereich ohne temporären Lagerbereich zu gehen.

Die Funktion der Gebrauchsanweisungsoption
-- besteht darin, anzugeben, dass es sich bei dem Inhalt um ein Verzeichnis oder eine Datei und nicht um einen Zweignamen handelt, um zu vermeiden, dass der Dateiname mit dem Zweignamen übereinstimmt und ein Fehler auftritt, da direkt git checkoutDas spätere Hinzufügen des Zweignamens wird zu einem Wechselzweig, der garantiert nicht verwechselt wird und als Nächstes direkt verwendet werden kanngit checkout <file>

Git zurücksetzen

Befehl: git revert -n 版本号
Essenz: git revertWird verwendet, um eine bestimmte Version „umzukehren“, um den Zweck zu erreichen, die Änderung dieser Version rückgängig zu machen.
Beispiel: commitNachdem Sie drei Versionen erstellt haben (Version 1, Version 2 und Version 3), stellen Sie plötzlich fest, dass Version 2 nicht funktioniert (z. B. liegt ein Fehler vor). Wenn Sie Version 2 widerrufen möchten, aber keine Auswirkungen darauf haben möchten Wenn Sie die Version 3 widerrufen, können Sie git revert -n 版本二的版本号stattdessen den Befehl zum Ausführen von Version 2 verwenden und eine neue Version 4 generieren. In dieser Version 4 werden die Dinge von Version 3 beibehalten, aber die Dinge von Version 2 werden widerrufen.
Beschreibung: Erstellen Sie eine neue Übermittlung, um die alte Übermittlung zu überschreiben. Die widerrufene Übermittlung und der neue Übermittlungsdatensatz werden gespeichert
Fügen Sie hier eine Bildbeschreibung ein

Git stellt die vorherige Version der beiden Methoden „Reset“ und „Revert“ wieder her
Befehl Prinzip Anwendbare Szene
Git zurückgesetzt Ändern Sie den Speicherort von HEAD, dh ändern Sie den Speicherort, auf den HEAD zeigt, in eine zuvor vorhandene Version Kehren Sie zu einer zuvor übermittelten Version zurück. Die nach dieser Version übermittelte Version wird nicht benötigt
gibt zurück Es wird verwendet, um eine bestimmte Version „umzukehren“, um den Zweck zu erreichen, die Änderung dieser Version rückgängig zu machen. Wenn Sie eine frühere Version widerrufen, aber auch die Version nach der Zielversion behalten möchten, zeichnen Sie den gesamten Versionsänderungsprozess auf

Git Zusammenführung rückgängig machen | Git zurücksetzen

Wenn git revert einen bestimmten Commit abbricht, müssen zwei Commits berücksichtigt werden

  • Regelmäßige Commit- git commitÜbermittlung, nur ein übergeordnetes Commit
  • Nachdem der Merge-Commit git mergezwei Zweige zusammengeführt hat, wird ein neuer Merge-Commit mit zwei übergeordneten Commits erstellt

git showMerge-Commits anzeigen mit

git show bd86846
commit bd868465569400a6b9408050643e5949e8f2b8f5
Merge: ba25a9d 1c7036f
#  merge commit bd86846是从 ba25a9d 和 1c7036f 两个 commit 合并过来的。

Befehl: git revert -m 选项 需要撤销的merge哈希值
-m Der von der Option empfangene Parameter ist eine Zahl, und der Wert der Zahl ist 1 und 2, also der erste oder der zweite, der in der Merge-Zeile aufgeführt ist.

Klassischer Fall: https://www.cnblogs.com/bescheiden/articles/10563651.html

Zusammenfassen

1. Code im Arbeitsbereich

git checkout -- 文件名 #丢弃某个文件的修改
git checkout . #丢弃全部

Alle Includes verwerfen: Neu hinzugefügte Dateien werden gelöscht, gelöschte Dateien werden wiederhergestellt und geänderte Dateien werden zurückgegeben. Die Änderung basiert auf dem letzten Hinzufügen oder Festschreiben.

2. Der Code wird ohne Commit-Übermittlung zum temporären Speicherbereich hinzugefügt

git reset HEAD <file> #从最近的版本将该文件拉取到暂存区
git reset HEAD .

Es wird nur der Bereitstellungsbereich geändert, nicht der Arbeitsbereich.

Filialleitung

Programmierer trennen ihre Arbeit von der Hauptentwicklungslinie, und die Entwicklung eigener Zweige hat keinen Einfluss auf den Betrieb der Hauptzweiglinie.

Vorteil

  • Fördern Sie gleichzeitig die Entwicklung mehrerer Funktionen parallel, um die Entwicklungseffizienz zu verbessern
  • Wenn während des Entwicklungsprozesses jedes Zweigs die Entwicklung eines bestimmten Zweigs fehlschlägt, hat dies keine Auswirkungen auf andere Zweige. Fehlgeschlagene Zweige können gelöscht und neu gestartet werden

git branchZeigen Sie an, in welchem ​​Zweig sich die aktuelle Arbeit befindet. Der Zeiger
HEADzeigt auf den lokalen Zweig der aktuellen Arbeit , der als Alias ​​​​des aktuellen Zweigs verstanden werden kann.

Zweigbeschreibung

  • Beim Zweigwechsel werden Dateien in Ihrem Arbeitsverzeichnis geändert.
    Beachten Sie beim Wechseln von Zweigen, dass Dateien in Ihrem Arbeitsverzeichnis geändert werden. Wenn Sie zu einem älteren Zweig wechseln, wird Ihr Arbeitsverzeichnis auf den Zustand zurückgesetzt, in dem es war, als der Zweig zuletzt festgeschrieben wurde. Wenn Git dies nicht sauber ausführen kann, wird der Zweigwechsel verboten.
  • Wenn Sie nicht angeben, welcher Zweig (Quellzweig) der neue Zweig (Zielzweig) erstellt werden soll, wird er standardmäßig masteraus dem Zweig erstellt. Wenn der Zielzweig erstellt wird, erbt er zu diesem Zeitpunkt alle Commits des Quellzweigs.

Allgemeine Zweiganweisungen

Befehlsname Wirkung
Git-Branch-Branch-Name Erstellen Sie einen Zeiger auf das Commit-Objekt, auf dem Sie sich gerade befinden, und nennen Sie ihn den Zweignamen.
git branch -v Zweig ansehen
Name des Git-Checkout-Zweigs Wechseln Sie die Zweige und ändern Sie die Ausrichtung des HEAD-Zeigers
git checkout -b Zweigname Erstellen Sie basierend auf dem aktuellen Zweig den angegebenen Zweig, der +
entspricht, und wechseln Sie zu diesemgit branch 分支名git checkout 分支名
git merge branchname Führt den angegebenen Zweig mit dem aktuellen Zweig zusammen
git branch -D Zweigname Um einen lokalen Zweig zu löschen, muss dies in anderen Zweigen erfolgen
git push origin -D [BranchName] Remote-Zweig löschen

Erstellen Sie beispielsweise einen Entwicklungszweig
Fügen Sie hier eine Bildbeschreibung ein

Spezifikation für die Filialverwaltung

Referenzartikel: https://juejin.cn/post/6844903945245048846

  • Entwickler implementieren neue Funktionen im Entwicklungszweig
  • Feature-Zweig
    • Entwickeln Sie ein unabhängiges neues Feature (nach Abschluss muss es in den Entwicklungszweig integriert werden).
    • Technische Recherche und Versuche (bei Fehlschlagen können Sie den Feature-Zweig jederzeit löschen)
    • Implementieren Sie die Funktionen, die in der nächsten Version entwickelt werden müssen, vorzeitig (werden in dieser Iteration möglicherweise nicht veröffentlicht).

Zweigverschmelzung

Wenn beim Zusammenführen von Zweigen kein Konflikt vorliegt und der Zweig in eine Richtung und eine Zeile vererbt wird, verwendet Git fast forworddiesen Modus. Einige schnelle Zusammenführungen sind jedoch nicht erfolgreich. Wenn kein Konflikt vorliegt, wird die Zweigverwaltungsstrategie ausgelöst , und Git wird automatisch einen neuen Submit veranlassen .

  • git merge [branchName] --squashFüge branchName mit dem aktuellen Branch zusammen und führe alle Commits für branchName zu einem Commit zusammen

Git Rebase

Referenzartikel: https://blog.csdn.net/weixin_42310154/article/details/119004977

Zusammenfassung der Schlussfolgerungen: Es wird nicht empfohlen,
den neuesten Code des öffentlichen Zweigs abzurufen – Rebase git pull -roder git pull --rebase.
Der Vorteil besteht darin, dass der Einreichungsdatensatz relativ prägnant ist.
Der Nachteil besteht darin, dass Sie nach dem Rebase nicht wissen, aus welchem ​​Zweig der aktuelle Zweig zuerst gezogen wurde, da sich die Basis geändert hat.

git stash 临时存储当前的工作现场

使用场景
正在修改A分支的某个功能时,优先级更高的任务出现了,但是该任务在B分支。
①提交后切换,代码保存在A分支,但是产生了无意义的提交。

在分支A上做的修改如果没有add或者commit,切换分支之后修改会被携带。

git stash 将当前修改(未提交的代码)存入暂存区,切换分支B修改完成后,在git stash pop取出。

git stash暂存后,工作区代码会恢复到最后一次提交时的代码。

常见命令

命令 描述
git stash 临时存储当前未commit的工作现场
git stash save “message” 临时存储当前未commit的工作现场,并添加描述。
在多个stash的时候推荐
git stash show 查看刚才暂存的修改
git stash show -p stashname 显示指定的贮藏文件具体改动
git stash pop 切换到临时存储现场的分支后,弹出栈顶的stash
git stash apply stash@{X} 换到临时存储现场的分支后,取出相应的暂存。X可使用命令git stash list查看,省略stash@{X}表示最近一次。
git stash drop stash@{X} 将记录表中取出的对应暂存记录删除。X可使用命令git stash list查看,省略stash@{X}表示最近一次。
git stash list 查看存储区的所有暂存修改记录

使用步骤

  1. 切换分支B前保存现场,git stashgit stash save "message"
  2. 修改完后,切换分支A再恢复现场,git stash popgit stash apply stash@{X}恢复现场

存储位置说明

  • .git/refs/stash 中,存储的是最后一个 stash 对应的节点指针
  • .git/log/refs/stash 中,可以看到全部的 stash 记录信息

Erklären Sie, dass
Git Stash nur geänderte Elemente und auch neue Elemente ausblenden kann.
Lösung:
① Verstecken Sie zunächst git addin git stash, die neuen Ergänzungen und Änderungen erfolgreich.
git stash -u

Supongo que te gusta

Origin blog.csdn.net/qq_41370833/article/details/132496640
Recomendado
Clasificación