1

リポジトリのクローンを作成したばかりで、これまで作業したことはありません。サブモジュールが含まれているので、

~/projects/myProject (master) $ git submodule init
~/projects/myProject (master) $ git submodule update

新しいバージョンのサブモジュールが必要だったので、次の方法で更新しようとしました。

~/projects/myProject (master) $ cd subs/mySubmodule
~/projects/myProject/subs/mySubmodule ((no branch)) $ git checkout master
~/projects/myProject/subs/mySubmodule (master) $ git pull

そして得た

Already up-to-date.

WTF

すべてを削除してすべてを再試行して状況を調査した後、サブモジュールが実際にブランチスイッチで更新され、プルが不要であり、応答(Already up-to-date.)が正しいことに気付きました。

それで、それはなぜですか?

4

1 に答える 1

1

スイッチがサブモジュールを更新したと言うのは正しくありません。を実行すると、サブモジュールが更新されましたgit submodule update。サブモジュールは少し奇妙です。このページが言うように:

...git submodule updateそのプロジェクトからすべてのデータをフェッチし、スーパープロジェクトにリストされている適切なコミットを確認するには:

したがって、を実行するgit submodule udpateと、表示されているバージョンが最新でなくても、リポジトリからのすべての変更がすでにあります。これは、各ブランチに特定のコミットが関連付けられているためです。表示されるコードは古い可能性がありますが、サブモジュールにはすでにすべての最新データが含まれています。次に、git checkout master利用可能な最新バージョンに切り替えても、git pull何もしません。

于 2013-02-26T17:57:20.640 に答える