Das git-Submodul ist immer getrennt, auch wenn der Zweig verfolgt wird

Lesezeit: 1 Minute

Ich habe ein Git-Submodul konfiguriert, um einen bestimmten Zweig zu verfolgen:

[submodule "subproject"]
path = subproject
url = ../subproject.git
branch = v2.44

In meinem Build-Skript möchte ich den Zweig des Unterprojekts abfragen können, also verwende ich cd subproject && git rev-parse --abbrev-ref HEAD. Ich würde erwarten, dass dies ausgegeben wird v2.44aber es gibt immer aus HEAD.

Wenn ich reingehe subproject/ und inspiziere den Zweig, ich bekomme:

git branch -v
* (HEAD detached at b69ac07) b69ac07 Another commit
  master                     36096e7 Some commit

Was ist denn hier los? Warum sollte ich eher losgelöst sein als auf der v2.44 sich verzeigen?

Wenn ich manuell git checkout v2.44das übergeordnete Git-Repo erkennt auch keine Änderung am Submodul, im Gegensatz zu wenn ich es tun würde git checkout v2.43 und dann bemerkt es, dass das Submodul geändert wurde.

Das ist normal!

Die sich verzeigen Notation in einer Submodul-Deklaration wird nur verwendet, wenn Aktualisierung das Submodul, über git submodule update --rebase oder git submodule update --merge, oder ein paar andere Sonderfälle. Zu allen anderen Zeiten hat jedes Submodul einen abgetrennten HEAD, der an der von der ausgewählten Übergabe abgetrennt ist gitlink-Indexeintrag in dem Superprojekt, das das Submodul verwendet.

(Das heißt, in der Superprojekteinige begehen C ausgecheckt ist. Begehen C sagt: Wenn Sie Submodul S verwenden, sollte es sich auf Commit CS befinden. Dieses Ding heißt a gitlink und es wird von Commit kopiert C zum Index, und dann git submodule update geht in das Submodul und checkt diesen bestimmten Commit als abgetrennten HEAD aus.)

997060cookie-checkDas git-Submodul ist immer getrennt, auch wenn der Zweig verfolgt wird

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

Privacy policy