2012-10-26 195 views
1

我有一些repo Arepo B。項目repo A取決於項目repo B。 我想這樣做,當一些用戶試圖從我的repo A拉動來源,從repo A拉,來源repo B也必須拉到一些文件夾。我已經看到,SVN可以將某些SVN回購鏈接與其他SVN回購鏈接聯繫起來。 如何鏈接git回購?Git - 將其他存儲庫鏈接到我的存儲庫

謝謝。

回答

3

Git對此有submodules

例子:

$ git init repo_a 
Initialized empty Git repository in /Users/messa/temp/submodule-example/repo_a/.git/ 
$ git init repo_b 
Initialized empty Git repository in /Users/messa/temp/submodule-example/repo_b/.git/ 

$ cd repo_b 
$ echo 'This is Project B.' >> README.txt 
$ git add README.txt 
$ git commit -am 'Initial commit in B' 
[master (root-commit) 5158772] Initial commit in B 
1 file changed, 1 insertion(+) 
create mode 100644 README.txt 

$ cd ../repo_a 
$ echo 'This is Project A, that depends on Project B.' >> README.txt 
$ git add README.txt 
$ git commit -am 'Initial commit in A' 
[master (root-commit) 7e8275b] Initial commit in A 
1 file changed, 1 insertion(+) 
create mode 100644 README.txt 

$ git submodule add ../repo_b project_b 
Cloning into 'project_b'... 
done. 
$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: .gitmodules 
# new file: project_b 
# 
$ git commit -am 'Added submodule project_b' 
[master c8fc469] Added submodule project_b 
2 files changed, 4 insertions(+) 
create mode 100644 .gitmodules 
create mode 160000 project_b 

$ tree 
. 
├── README.txt 
└── project_b 
    └── README.txt 

1 directory, 2 files 

您可以準確地控制從repo_b什麼承諾將從repo_a鏈接。

欲瞭解更多信息,請參閱git help submodule或上面的鏈接。

但是有一個問題 - 當有人克隆repo_a時,project_b會在那裏,但是是空的。在git clone之後,將需要git submodule initgit submodule update

我沒有子模塊的實際經驗,但我見過一些批評 - 例如this article。我認爲選擇正確的工作流程以避免大部分問題非常重要。

相關問題