4

解決済みの問題:サブモジュールによる外部コードの依存関係を表示するには: VonCに感謝します!

現在の問題: 2 つのフォルダーに重複するコンテンツのないサブモジュールを作成する

現在の問題に対する一時的な解決策:サブモジュールとしてのフォルダーの名前は bin であるため、フォルダーの名前を bin-github に変更します。これは、ホームでコンテンツを複製する必要があることを意味します。

私の HOME フォルダーは ~/bin に依存しています。リポジトリMasiの HOME にあるファイルと、Githubのリポジトリbinの ~/bin にあるファイルがあります。ホームでの関連するフォルダー構造:

~
|-- [drwxr-xr-x] bin
    | -- fileA
    ` -- folderA
    ...

~/bin をMasiの Git のサブモジュールにする方法を教えてください。

~/bin を ~/ の Git のサブモジュールにするにはどうすればよいですか?


#3 VonC のコメントへの返信:

私の .gitmodules

[submodule "bin"]   
         path = bin
         url = git://github.com/masi/bin.git

.gitmodules にあるので、サブモジュールを再度追加する必要はないと感じています。

走る

Sam master $ git submodule update
Sam master $ git submodule foreach git pull
Sam master $ ls bin 

#2 VonCの回答への返信:

自宅に重複コピーがないように、.gitmodules を次のように変更しました。

[submodule "bin"]
    path = bin
    url = git://github.com/masi/bin.git

上記と同様に submodule-bin -folder をプルできないため、これは別の状況のようです。

新しくクローンされた git-repo で次のようになりました

Sam master $ git submodule git init
error: pathspec 'git' did not match any file(s) known to git.
error: pathspec 'init' did not match any file(s) known to git.
Did you forget to 'git add'?                          # I am not sure what this means
Sam master $ git submodule foreach git pull
Sam master $ git submodule update

.gitmodules に外部リポジトリがあります。なぜ私に求めているのgit addですか?


VonCの答えに返信してください:

走る

git submodule add git://github.com/masi/bin.git bin-github-copy

既存のフォルダーと同じ名前の新しいリポジトリを追加できないためですbin

私の .gitmodules は

[submodule "bin-github-copy"]
    path = bin-github-copy
    url = git://github.com/masi/bin.git

走る

git clone git://github.com/masi/Sam.git

私は空の bin ディレクトリを取得します。

ビンの内容を取得するにはどうすればよいですか?

4

1 に答える 1

5

まず、Git ではディレクトリを「追加」することはできず、そのディレクトリ内の少なくとも 1 つのファイルの内容のみを追加することを忘れないでください。

次に、2 つの選択肢があります。

  • submodules、Masi がGitHub に保存されている bin ディレクトリ[内のファイルの特定のコミット](または GitHub に保存されているブランチの最新のコミット) を参照するため

  • subtree merge、2 つのリポジトリを一緒に混合し、Masi リポジトリから直接 bin 内のファイルへの変更をより簡単に追跡するため。あなたのシナリオでは、それはより簡単かもしれません。

これら 2 つの戦略の詳細については、この回答を参照してください。


サブモジュール パスでは、サブモジュールの宣言は作業の半分にすぎません。サブモジュールを初めて初期化する必要があります

git submodule git init

次に、サブモジュールをプルする必要があります。

git submodule foreach git pull

次に、サブモジュールを更新します

git submodule update

Git サブモジュール、パート IおよびGit サブモジュール、パート IIを使用したこの実用的な例も参照してください。

.gitmodulesファイルにはパスのみが保存されますが、コミット バージョンはメイン プロジェクトと共に保存されます。何が起こるかを示すために、GitHub でプロジェクト
を作成しました。具体的には、サブモジュールを追加するこの commitを見て、何が起こっているかを確認してください。

+Subproject commit 60be4b09f51d2560802ebd744893bb6f737ef57c
于 2009-07-17T20:48:06.273 に答える