6

(主に Git に関する質問ですが、他の PyroCMS ユーザーに関連する可能性があります)

私は PyroCMS のローカル リポジトリを持っています。このリポジトリは、メイン プロジェクトの github フォークのクローンです。私は PyroCMS モジュールも持っています。これは、そのプロジェクトの github フォークのローカル クローンでもあります。

両方を別々のディレクトリに配置しました。

~/Dropbox/websites/pyrocmscommunity-test/
~/Dropbox/github/PyroDatabase/

PyroDatabase を pyrocmscommunity-test のサブモジュールとして追加したいので、github から更新をプルしたり、自分の変更を追跡したりできます。

作業ツリーの一番上に移動して、次のことを実行して、これを実行しようとしました。

git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/

しかし、正しく完了しませんでした:

Cloning into 'addons/shared_addons/modules/database'...
ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly

SSH接続を指定しなかったため、これを理解できません。ローカルリポジトリを使用したかっただけです。何に接続しようとしているのか、またその理由は何ですか?

また、コマンドを繰り返すたびに、次のようになります。

'addons/shared_addons/modules' already exists in the index

しかし、ファイルがなく.gitmodules、どちらにもモジュールファイルについての言及がないため、これを理解できません.gitconfig

何が間違っているのか、どうすればリセットできますか?

ありがとう、ウィリアム

4

2 に答える 2

15

サブモジュールの場所に相対 URL を指定すると、Git は、originファイル システム上のプロジェクトの場所ではなく、現在のプロジェクトの (ここでは Github) URL に対して相対的に取得します。これは、サブモジュールがリモートの場所への永続的なポインターであるためです。ここで、Git は元の github リポジトリに 2 レベル上で接続しようとしますが、これは間違った URL です。

2 番目のエラーについては、Git がインデックスのステージング領域にエントリを作成しました。これを削除 (ステージング解除) する必要があります。

git rm -r addons/shared_addons/modules

次に、クローンへの絶対パスで再試行します。

git submodule add $HOME/Dropbox/github/PyroDatabase/ addons/shared_addons/modules/

とにかく、プロジェクトのローカルクローンをそれ自体のサブモジュールとして追加するのは奇妙です。サブモジュールは、含まれているプロジェクトの別のリポジトリになることを意図しているためです。標準的な Git の方法で、ローカル コミットとオリジン コミットを追跡してみませんか?

于 2012-05-02T22:58:24.670 に答える
2

どのバージョンの git を実行していますか? 指定したディレクトリ構造がステージングされているため、コマンドを再度実行できない可能性があります。次のようにリセットできます (このコマンドには注意してください)。

$ git status # check what has been changed
$ git reset --hard HEAD # destroy all working copy changes

git で何が起こっているかをデバッグするための本当に便利な方法は、 setGIT_TRACE=1です。したがって、次のようにクリーンアップしたら、コマンドを再度実行してみてください。

$ GIT_TRACE=1 git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/
于 2012-05-02T22:41:47.837 に答える