2017-03-09 153 views
0

在我的GIT實現中,所有更改都從中拉出,並推送到一個遠程origin。我也只有一個本地分支:masterGIT:將不同的子目錄推送到不同的遠程存儲庫

我有客戶克隆和從origin拉。但是,他們只需要某些文件夾。每次拉一切都會覆蓋一些不需要的文件夾。 Git似乎不允許選擇性拉動。

我創建了另一個遠程回購:production;其中只有來自本地存儲庫的某些文件夾將被推送。預期結果是origin包含項目的所有文件夾,而production僅包含一些選定的文件夾。

我很樂意獲得提示或其他最小方法來解決這個問題。

下面是一個例子來說明: 我的本地庫的結構如下:

root/... 
root/folder1... 
root/folder2... 
root/folder3... 
root/folder4... 

我的根文件夾初始化git的,我跟蹤和推動所有變更到我的遠程origin。從origin提取的客戶端將從文件夾1-4中獲取所有更改。但是,他們只需要說folder2和folder4。所以我的想法是繼續推動所有提交到origin,但能夠只推動提交folder2和folder4到production

這樣,如果客戶端克隆起源,他們會得到folders1-4。如果他們克隆production,他們只會得到folder2和folder4。

這是如何實現的?

+2

Git不會推送文件或文件夾,它的工作原理是*提交*。如果要發送包含其他提交子集的提交,則必須對這些子集進行單獨的提交。之後,您可以將您喜歡的任何子圖推送到您喜歡的任何遙控器上。 – torek

回答

0

在這種情況下,我保留了兩個git存儲庫。有更合適的方法來做到這一點,但這種方法也起作用。如果目錄如下,那麼,

root/... 
root/prod/.... 

現在你可以在root目錄做git init這裏。並將此prod添加到.gitignore文件。然後git initroot/prod上,並將其視爲完全不同的存儲庫。

如果您沒有將prod添加到.gitignore文件,您可以在第一個存儲庫上跟蹤它。

+0

嗨。使用你的類比,本地目錄的形式爲:root/...,root/folder1 ...,root/folder2 ...,root/folder3 ....此刻,我跟蹤並推送所有更改根(其中包括文件夾1,2,3)來源。我只想推送說文件夾1和文件夾3的變化來製作遠程存儲庫。這樣,如果有人克隆起源,他們將獲得整個項目,並且如果他們克隆產品,則他們每次只獲得folder1和folder3。謝謝。 –

3

如果您有不能拖動整個存儲庫的項目,那麼您已經設置了錯誤的結構。

您需要爲每個'項目'需要的每個組件設置一個存儲庫,這樣他們可以爲每個單獨的部件正確使用存儲庫。

如果這仍然不合適,那麼Id建議您的整體架構需要查看。

相關問題