私はこの質問が打ちのめされたことを知っています。しかし、サブモジュールがスーパープロジェクトのコミットを参照しようとしている理由をまだ明確に理解していません。私はいくつかのサブモジュールを持つプロジェクトを持っています。そのいくつかは、私が貢献したい github リポジトリを参照しています。モジュールを更新した後、モジュールの変更をプルします。
[ashinn@puppet1 puppet]$ cd modules/ganglia [ashinn@puppet1 ganglia]$ git ブランチ * (分岐なし) 主人 [ashinn@puppet1 ganglia]$ git pull オリジンマスター リモート: オブジェクトのカウント: 8、完了。 リモート: オブジェクトの圧縮: 100% (4/4)、完了。 リモート: 合計 6 (デルタ 4)、再利用 4 (デルタ 2) オブジェクトの開梱: 100% (6/6)、完了。 https://github.com/andyshinn/puppet-ganglia から * ブランチ マスター -> FETCH_HEAD 再帰によるマージ。 README | 1 + 1 ファイル変更、1 挿入 (+)、0 削除 (-)
ここで、スーパープロジェクト内のモジュールへの参照を更新します。
[ashinn@puppet1 ganglia]$ cd ../.. [ashinn@puppet1 puppet]$ git add modules/ganglia [ashinn@puppet1 puppet]$ git commit -m '更新された神経節モジュール' [ganglia c172591] ganglia モジュールを更新 1 ファイル変更、1 挿入 (+)、1 削除 (-)
私は現在、ganglia ブランチで作業しているので、オリジンにプッシュします (これは 2 つの異なる URL です)。
[ashinn@puppet1 puppet]$ git push 元の神経節 オブジェクトのカウント: 8、完了。 最大 2 つのスレッドを使用したデルタ圧縮。 オブジェクトの圧縮: 100% (6/6)、完了。 オブジェクトの書き込み: 100% (6/6)、616 バイト、完了。 合計 6 (デルタ 4)、再利用 0 (デルタ 0) git@github.com:andyshinn/puppet.git へ 1876698..c172591 神経節 -> 神経節 オブジェクトのカウント: 5、完了。 最大 2 つのスレッドを使用したデルタ圧縮。 オブジェクトの圧縮: 100% (3/3)、完了。 オブジェクトの書き込み: 100% (3/3)、323 バイト、完了。 合計 3 (デルタ 2)、再利用 0 (デルタ 0) リモート: /var/lib/puppet/repo から リモート: dcd1fcc..c172591 神経節 -> 起源/神経節 リモート: https://github.com/andyshinn/puppet-ganglia から リモート: a0c4e21..975c92f マスター -> オリジン/マスター リモート: 致命的: 参照はツリーではありません: c5defdeae006c7b87058cc5c79aef60087b63a6b リモート: サブモジュール パス 'modules/ganglia' で 'c5defdeae006c7b87058cc5c79aef60087b63a6b' をチェックアウトできません remote: 既存の環境の ganglia を更新しています puppet@puppet.mydomain.com:repo へ dcd1fcc..c172591 神経節 -> 神経節
リモートには、異なるフォルダー内のブランチをチェックアウトしgit submodule update --init
、それぞれに対して実行する受信後スクリプトがあります。元のリポジトリに手動で接続すると、問題を確認できます。
-bash-4.1$ git プル すでに最新です。 -bash-4.1$ git サブモジュールの更新 --init 致命的: 参照はツリーではありません: c5defdeae006c7b87058cc5c79aef60087b63a6b サブモジュール パス 'modules/ganglia' で 'c5defdeae006c7b87058cc5c79aef60087b63a6b' をチェックアウトできません
ここで何が間違っていますか?