19

プロジェクトのサブモジュールとして新しいリポジトリを作成したいと考えています。

通常、Github リポジトリを作成し、コマンドを使用してサブモジュールとして追加します。 git submodule add url_to_repo.git

最初に別の場所にレポを作成せずに、新しいレポをサブモジュールとして直接作成する方法はありますか (Github などのローカルでもリモートでもありません)。

4

3 に答える 3

7

簡単!サブsubmodule_dirモジュール化するディレクトリの名前を指定します (まだ git の制御下にないことを前提としています)。

cd submodule_dir
git init
git add .
git commit
# on github, create the new repo, then:
git remote add origin git@github.com:your_username/your_repo_name.git
git push -u origin master
cd ..
mv submodule_dir submodule_dir_delete_me
git submodule add git@github.com:your_username/your_repo_name.git submodule_dir

あとで(幸せになったら)

rm -rf submodule_dir_delete_me
于 2015-09-20T08:18:37.703 に答える
6

あなたの理解が正しければ、これは私がEclipseプロジェクトとワークスペースに対して頻繁に行っていることです。この構造から始めましょう。

$ find .
.
./projekt.txt
./sub1
./sub1/sub1.txt
./sub2
./sub2/sub2.txt

最初にサブモジュールとマスターを初期化します。

$ cd sub1
$ git init
$ git add *
$ git commit -m "init sub1"
$ cd ../sub2
$ git init
$ git add *
$ git commit -m "init sub2"
$ cd ..
$ git init
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   projekt.txt
#   sub1/
#   sub2/

これらのフォルダーを通常のフォルダーの代わりにサブモジュールとして追加するには、次のコマンドを実行し、単に./sub代わりに相対パスを使用しますsub

$ git submodule add ./sub1
$ git submodule add ./sub2

今、それは次のように見えるはずです

$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   .gitmodules
#   new file:   sub1
#   new file:   sub2
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   projekt.txt

最後に、親フォルダーで and を実行するgit add *と、完了です。git commit -m "init parent"

サブモジュールの 1 つでファイルを変更した場合、誰かが親リポジトリを複製したときにサブモジュールの最新バージョンを取得するために、最初にサブモジュールをコミットし、次に親リポジトリもコミットする必要があります。

于 2013-10-27T14:24:38.980 に答える
5

方法がわかりません:サブモジュールは、定義上、別のリポジトリからのSHA1です(つまり、親リポジトリが上記のSHA1を抽出するには、他のリポジトリが存在する必要があります):保持する.gitmodulesファイルでそのアドレスを参照する必要があります親リポジトリ。

サブモジュールは、完全に分離された内部リポジトリ内の特定のコミットオブジェクトを参照する、メインリポジトリ内のいわゆるgitlinkツリーエントリから構成されます。

submodule.<name>.url

サブモジュールリポジトリのクローンを作成できるURLを定義します。./これは、git-clone(1)に渡す準備ができている絶対URLか、(またはで始まる場合は../)スーパープロジェクトのオリジンリポジトリに相対的な場所のいずれかです。

したがって、サブモジュールリポジトリをローカルで作成できますが、とにかく作成する必要があります。

于 2013-02-10T18:00:48.337 に答える