Alles in Git verstauen, einschließlich aller Submodule?

Lesezeit: 2 Minuten

Benutzer-Avatar
Wjachaslaw Gerchicov

Wenn ein Projekt Submodule enthält, müssen Sie alle separat stashen/unstashen. Gibt es eine Möglichkeit, dies mit weniger Aktionen zu tun?

Dieser Link ist vielleicht hilfreich:

Ziehen Sie einfach das neueste aller Submodule

Es geht um den “Pull”-Befehl, aber es gibt einige Möglichkeiten, wie man zwischen allen Submodulen iteriert.

Benutzer-Avatar
Schoaib Shakeel

Sie können verwenden foreach um einen bestimmten Git-Befehl für jedes Untermodul auszuführen. Um beispielsweise ‘git stash’ auf alle Module anzuwenden, verwenden Sie Folgendes:

git submodule foreach 'git stash'

In ähnlicher Weise checkt der folgende Befehl aus master verzweigen und dann für jedes Submodul alle Aktualisierungen von der Remote-Quelle abrufen.

git submodule foreach 'git checkout master; git pull'

Lesen Sie mehr unter: http://git-scm.com/book/en/v2/Git-Tools-Submodules

  • Könnten Sie zusätzlich erläutern: git submodule foreach "(git checkout master; git pull)&"? Dieser Befehl wird zum Ziehen für jedes Submodul verwendet. Warum fügen sie am Ende ein kaufmännisches Und hinzu und Sie tun nicht dasselbe?

    – Vjachaslav Gerchicov

    10. April 2015 um 9:59 Uhr


  • Ebenfalls & am Ende eines Shell-Befehls zwingt die Shell, den Befehl im Hintergrund auszuführen. In diesem Fall sehen Sie keinen Ausgabetext von git checkout master; git pull Befehl

    – Shoaib Shakeel

    10. April 2015 um 10:16 Uhr

Benutzer-Avatar
VonC

Warnung: vor Git .24 (Q4 2019), mit “git submodule foreach git stash” könnte verlorene lokale Änderungen an Submodulen.

Sehen begehen 556895d (12.10.2019) von Jakob Jarmar (jarmar).
(Zusammengeführt von Junio ​​C. Hamano — gitster in bb52def übergeben18.10.2019)

stash: Rekursives Hard-Reset auf Submodulen vermeiden

Unterzeichnet von: Jakob Jarmar

git stash push speichert Submodule nicht rekursiv, aber wenn submodule.recurse gesetzt ist, kann es rekursiv sein reset --hard Sie.

Dass nur die destruktive Aktion rekursiv ist, ist wahrscheinlich ein überraschendes Verhalten und unwahrscheinlich, dass es wünschenswert ist, daher sollte die einfachste Lösung darin bestehen, sicherzustellen, dass der Aufruf an git reset --hard nie in Submodule rekursiv.

Dies entspricht dem Verhalten von check_changes_tracked_files, die Submodule ignoriert.

1145510cookie-checkAlles in Git verstauen, einschließlich aller Submodule?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy