2017-02-23 11 views
10

私はgitレポを持っています。これは別のものをsubmoduleに依存しています。私のプロジェクトのルートで(.git.gitsubmodulesなどがどこにあるか)私はこれは、次のメッセージで失敗しましたgitは、特定のコミットに対して特定の有効なサブモジュールをフェッチして、それを修正する方法をなぜ失敗しますか?

git submodule update 

と呼ば:サブモジュールパス「SRC /フレームワーク」でフェッチ

、それcc8c38e9d853491c672452d8dbced4666fc73ec8が含まれていませんでした。そのコミットの直接フェッチに失敗しました。

src/frameworkは、私のプロジェクト(PROJECT_ROOT/src/framework)のサブディレクトリであり、サードパーティーのレポがどこにあるのかがわかります。与えられたコミットハッシュは有効なハッシュです。

私もgit clone --recursive <my-repo>を試しましたが、失敗しました。したがって、私は本当に特定のバージョンを取得する必要があるため、私のコードブレークレポframeworkの最近のアップデートに:私の.gitsubmodules

内容は、私は、次の重要な事実を留意する必要があることに加えて

[submodule "src/framework"] 
     path = src/framework 
     url = [email protected]:gh/framework.git 

です物事はうまくいきました。

+0

*指定されたコミットハッシュは有効なものです*そのハッシュのコミットがサブモジュールレポにあることを意味しますか? – Leon

+0

はい、自分のWebブラウザ(GitLabを使って)のリンクをたどって、そのコミットで起こったすべての変更を表示するページにすることができます。そうすれば、誰かが何らかのリセットをしたようなことではありません。 – rbaleksandar

+0

権限の問題である可能性があります。サブモジュールレポだけをクローンできますか? – Leon

答えて

7

はい、私は(GitLabを使用して)自分のWebブラウザ

にリンクをたどることができるが含まコミットであなたは、しかしそのレポのクローンを作成することはできますか?
GitLabはアクセスを制限するpermission levelを持っていますので、git cloneコマンドが適切なユーザで実行され、sshキーがuser home directory/.sshであることを確認してください。

サブモジュールを自分で複製できない場合(ローカルハードドライブ上の任意の場所)、エラーメッセージが表示されます。

問題は、私が作業していたリポジトリのサブモジュールとしてリンクされていたものより前にコミットするようにヘッドをリセットした人が問題になっていました。これにより、参照が無効になりました。 master

git submodule update --remote 

をコミット

cd /path/to/parent/repo 
git config -f .gitmodules submodule.bar1.branch master 

そして、最後にフェッチでサブモジュールを更新:私はどのようにこの

を修正するには、make sure the submodule follows a branch(ここでは、たとえば、master)することができます見当がつかない--remote optionはスーパープロジェクトの記録したSHA-1を使用してサブモジュールを更新しますが、代わりにサブモジュールのリモート追跡ブランチのステータスを使用してください。

"did not contain cc8c38e9d853491c672452d8dbced4666fc73ec8"というエラーメッセージは表示されません。

関連する問題