2016-06-28 41 views
1

我有一個Git倉庫:兩個遠程倉庫,不同forlders

庫答:

config 
    view1.yml 
    view2.yml 
public 
    css/ 
    styles.css 
    js/ 
    scripts.js 
    index.html 

我想補充另一個遠程倉庫,而只是跟蹤公共文件夾的內容,例如:

存儲庫B:

css/ 
    styles.css 
js/ 
    scripts.js 
index.html 

我怎麼能在本地做到這一點?與git remote add

+0

看看[這個相關答案](http://stackoverflow.com/a/38099643/4233593) –

回答

1

如果一切是你要導出,你真的想忽略其他一切一個目錄下,你可以打倒git的過濾分支濾波器的分支,然後推只是產生分支出來回購B.

從分支你有興趣的提示,假設你想保留剛更改爲目錄「公共」及以下:

git checkout -b nameOfPublicBranch 
// Create a new branch where you want to start to filter 

git filter-branch -f --subdirectory-filter public 
// This filters your branch down to commits that modified public (and below) 

git push repoB nameOfPublicBranch 
// now export to repoB just this stuff that you wanted on your branch nameOfPublicBranch 

git checkout <yourOldBranchName> 
// get back to your old branch 

如果你想下來壁球提交到一個分支nameOfPublicBranch,然後做在你推動它之前在它上面放一個底座。

可能有很多其他方法來解決這個問題,一個可能是子模塊的使用,並且這種方法可能存在意想不到的問題(重寫歷史記錄)。

0

也許你應該使用下列內容gitignore(它告訴混帳忽略文件,也不要對其進行跟蹤)(沒有測試):

* 
!/css 
!/js 

如果你已經有文件被跟蹤,然後你在設置gitignore之前需要運行git rm --cached <file>

如果您想了解更多關於gitignore的信息,或許您想閱讀git tutorial的this part

1

看看git subtree。從他們的文檔,它解釋如下:

...子樹允許包括的 子目錄的主要項目中的子項目,任選包括子項目的整個 歷史。

例如,您可以包括一個圖書館作爲 子目錄應用程序的源代碼

我的地方(git init --bare)創建新的純倉庫,做一個子樹split命令「分支」公用文件夾的歷史記錄。然後我會將這些信息推送到您的其他存儲庫。這個例子可以在上面鏈接的文檔中看到,如Example 3

<go to the new location> 
git init --bare 
git subtree split --prefix=lib --annotate="(split)" -b split 
git push <new-repo> split:master