Git-Submodul verstehen und bei einem bestimmten Commit-Hash oder einer bestimmten Version “einfrieren”.

Lesezeit: 1 Minute

Benutzer-Avatar
Calvin Cheng

Unter der Annahme des folgenden Projektlayouts: –

mainrepo_git
    |____ .git
    |____ .gitmodules
    |____ proj            <------- directory containing the code files for mainrepo
            |____ 3rdpartysourcecode <-- directory containing upstream open source code
            |      |____ .git
            |      |____ 3rdpartyfiles
            |
            |____ mainrepofilesanddirectories  

mainrepo_git enthält Quellcode, für den ich direkt verantwortlich bin. Ich habe Lese-/Schreibzugriff und kann direkt auf ein von mir verwaltetes Remote-Git-Repository pushen und pullen.

Innen verschachtelt mainrepo_git ist ein Verzeichnis, das ich benannt habe Quellcode von Drittanbietern. Dies Quellcode von Drittanbietern Verzeichnis ist in der Tat ein weiteres Git-Repo (allgemein auch als “Git-Submodul” bezeichnet), das auf ein Open-Source-Git-Repository eines Drittanbieters verweist, das von anderen Entwicklern verwaltet wird. Ich habe nur lesenden Zugriff darauf. Kein Schreibzugriff.

Gibt es eine Möglichkeit, einen bestimmten Commit-Hash des Git-Submoduls in Bezug auf einen Commit in meinem Haupt-Repository „einzufrieren“?

Zum Beispiel, wenn ich am Commit bin (oder zurückkomme). a12ucak In meinem Mainrepo wird mein Git-Submodul auch auf eine bestimmte Version zurückgesetzt, die ich zum Commit verbinde a12ucak? Und wenn ich auf Commit umschalte b349jdsakmein Git-Submodul wird auch auf eine Version zurückgesetzt, an die ich binde b349jdsak?

Also meine Frage ist: Gibt es eine Möglichkeit, eine Verknüpfung zwischen einem bestimmten Commit im Hauptrepo und einem entsprechenden Commit im Git-Submodul herzustellen? Wenn ich also diesen bestimmten Commit im Haupt-Git-Repo auschecke, wird der entsprechende Commit im Git-Submodul ebenfalls ausgecheckt.

Das Einfrieren ist der springende Punkt bei Submodulen. Du solltest wirklich ein Tutorial dazu lesen. Kurzgesagt, git add 3rdpartysourcecode (Wichtig kein abschließender Schrägstrich!) gefolgt von einem Commit sperrt das aktuell ausgecheckte Submodul-Commit auf das Supermodul-Commit. Dann verwenden Sie später git submodule update um diese Überarbeitung zu überprüfen.

  • Richtig. Siehe auch stackoverflow.com/questions/1979167/git-submodule-update/…

    – VonC

    30. August 2011 um 5:42 Uhr

1032580cookie-checkGit-Submodul verstehen und bei einem bestimmten Commit-Hash oder einer bestimmten Version “einfrieren”.

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

Privacy policy