2012-04-01 46 views
0

我有我的個人git回購名字myrepo。我使用git clone取得somerepo,現在我想讓它成爲myrepo的組成部分。我正在考慮如下。經過'git克隆<some_repo>'在<my_repo>裏面,我想讓<some_repo>部分<my_repo>

  1. 裏面myrepo樹,git clone <somerepo>
  2. somerepo.git.gitignore
  3. 刪除所有git的相關文件和目錄添加的所有文件中獲取somerepo和承諾。

是否有任何命令只克隆git-repo的「原始」數據(忽略與git相關的文件)?更好的是,是否有一個可以完成這三個步驟的命令(或可能是多個命令)。

我已閱讀約git submodule一點。可以使用submodule嗎?假設我對somerepo未來的修改沒有興趣。事後

git remote add some_repo [email protected]:some-repo 

問題git pull some_repogit fetch some_repo +手動合併:

+0

你可以使用一個子模塊,或者你可以做一個子樹合併......都將保持「外交」資源庫的完整歷史記錄(通常是你想要的) – knittl 2012-04-01 13:51:41

回答

1

我可能不明白這個問題,因爲它聽起來像你已經回答了。

克隆後,只需rm -fr .git目錄。每個存儲庫只有一個.git目錄,因此很容易將其刪除。 (不像顛覆你在每個目錄中有.svn的地方。)

你說「假設我沒有任何未來的興趣」,所以沒有必要刪除.gitignore文件。但是,如果你真的想,這也是很容易的:

$ find <path_to_some_repo> -name '.gitignore' -exec rm {} \; 

最後,git add <path_to_some_repo>就大功告成了。

如果這不是你想要的,那麼請更準確地解釋你的要求。

是否有任何命令只克隆git-repo的「原始」數據(忽略與git相關的文件)?

不是字面上的,因爲git中的「clone」意味着獲取存儲庫中的所有ref和對象。有git checkout-index這是一種類似於「svn導出」,但你仍然必須有一個存儲庫的副本才能做到這一點。

參見:Do a "git export" (like "svn export")?

+0

我一直在尋找git內的單個命令,而沒有經歷所有這些。就像'git pull-and-merge-in-tree some-repo' .. – Dilawar 2012-04-02 06:09:56

0

您可以添加第二個存儲庫作爲遙控器。

A subtree merge也可能適用。

+0

最好你會做一個子樹合併,將所有文件移動到存儲庫的子樹中 – knittl 2012-04-01 13:52:23

+0

@Fermaref如果我在執行某些步驟後在其他某臺機器上執行了'git clone '操作。我會自動獲取一些回購嗎? – Dilawar 2012-04-01 13:54:19

+0

隨意提出編輯/詳細的評論中的命令我會批准/添加它自己。 – Femaref 2012-04-01 13:54:24

相關問題