2

読み取り専用のパブリック リポジトリから複製した git サブモジュールを含む git プロジェクトがあります (つまり、そのリポジトリにプッシュできません)。そのサブモジュールにコミットすることは可能ですか? これが私がこれをやろうとした方法です

[main]$ cd sub
[sub]$ git checkout master
[sub]$ echo test > new-file
[sub]$ git add new-file
[sub]$ git commit -m 'added a new file'
[sub]$ cd ..
[main]$ git add sub
[main]$ git push origin

ここまでは順調ですね。問題は、別のコンピューターに移動して次のことを行うときです。

[main]$ git pull
[main]$ git submodule update

しかし、それは失敗しfatal: reference is not a tree: af232...ます。メインで行うと、サブモジュールのすべてのオブジェクトもプッシュされるように見えるため、これはうまくいくと思いgit push originました(結局のところ、それらはメインの .git ディレクトリにあります)。しかし、どうやら、2 番目のコンピューターがプルしたときに、これらの新しいオブジェクトを受信しないようです。

4

1 に答える 1

1

これは、スーパー プロジェクトでサブモジュールの変更をプッシュしたが、サブモジュールで発生した実際の変更をプッシュしていないためです (git push originサブモジュールの変更をプッシュせず、SHA1 のみをコミットします)。これは読み取り専用のリポジトリであるため、実行できることではありません。

できることは、サブモジュールの URL を独自のリポジトリに変更し、変更をそこにプッシュし、スーパー プロジェクトで URL の変更をコミットしてプッシュすることです。

于 2012-07-12T11:31:56.273 に答える