我知道克隆功能可以做到這一點的遠程倉庫,但事情會克隆什麼是回購協議,這是正在推的一切。創建本地文件已經在本地回購
我們需要的是修改我們存儲庫模板中的一些文件,並使用這些修改過的文件創建一個新的回購站,而不必將這些文件(依賴於項目)提交給我們的模板,因此它保持不變。
這可能嗎?使用「git add」,「git commit」,然後使用一個額外的參數「git push」,該參數可能是遠程存儲庫?
基本上,我想要的文件,而不是回購。
我知道克隆功能可以做到這一點的遠程倉庫,但事情會克隆什麼是回購協議,這是正在推的一切。創建本地文件已經在本地回購
我們需要的是修改我們存儲庫模板中的一些文件,並使用這些修改過的文件創建一個新的回購站,而不必將這些文件(依賴於項目)提交給我們的模板,因此它保持不變。
這可能嗎?使用「git add」,「git commit」,然後使用一個額外的參數「git push」,該參數可能是遠程存儲庫?
基本上,我想要的文件,而不是回購。
主要考慮庫(主)和庫繼承(child1,的child2)。我會做什麼,開始將主存儲庫中創建每個孩子一個分支:
main$ git checkout -b child1
... edit/commit for child1 ...
main$ git checkout master
main$ git checkout -b child2
... edit/commit for child2 ...
現在,你可以這樣做:
main$ git push [email protected]:repositories/child1.git child1:master
main$ git push [email protected]:repositories/child2.git child2:master
這推動上庫child1的主分支child1。這樣你可以保持你的主要清潔。如果這是一次性推動,則可以在之後移除分支。你主要需要強迫孩子庫合併,如果你能不能快進(see the refspec for the push)。
這可能會奏效,我會試一試 – NaturalBornCamper 2012-01-04 20:40:43
非常感謝!無需強制合併! – NaturalBornCamper 2012-01-04 21:47:35
最簡單的就是使用你推到一個遠程,然後才能應用更改本地克隆。您可以執行以下操作:
複製模板存儲庫。
git clone --no-hardlinks templaterepo newrepo
過濾掉你不想從舊倉庫保存文件。
cd newrepo
git filter-branch --tree-filter "rm -f sensitive/file1.txt file2.txt" HEAD
進行任何其他變化,你通常在Git來完成。
git add ...
git commit ...
添加遠程。
git remote add origin [email protected]
推
git push origin master
這將確保你保存歷史記錄所有你真正關心的文件,並全殲歷史記錄那些你不關心(哪些可能包含敏感數據)。
步驟1之後。newrepo
與templaterepo
基本上沒有任何關係,除了共享歷史記錄(--no-hardlinks
假設你是從同一個文件系統克隆的,只是爲了加快速度),所以不管你在templaterepo
之後做什麼,它都不會影響到內容newrepo
(或其遠程)。
查看git help filter-branch
瞭解更多。
你可以使用'git remote add',然後推送到那個新的遠程。 – Philippe 2012-01-04 19:46:41
這並不是一個壞主意,但是如果我們從模板中修改文件,它們也會被推到所有衍生它的項目上,這可能會破壞一些東西。 – NaturalBornCamper 2012-01-04 20:02:39
新存儲庫與原始存儲庫之間的關係是什麼?即是否應該將原始存儲庫(在共享文件上)的更改反映到新存儲庫中?還是僅僅是一次性複製? – Philippe 2012-01-04 20:04:09