2014-10-06 59 views
1

在iOS開發過程中,我有幾個任務。完成每個作業後,我製作了完整的項目目錄的副本。所以,現在在4個作業之後,我有4個目錄,每個目錄都有當時項目的快照。從幾個目錄(快照)構建Git回購

現在我想開始一個git倉庫,並有「完整」的歷史。我想從第一個目錄開始,即第一個版本的項目,推動一切,然後推動第一個和第二個之間的差異等等。但是因爲它們在不同的目錄中,我想我不能簡單地「git remote add origin」一個接一個地加上「all」,「commit」和「push」?因爲使用「git add --all」,我會把所有的東西都推到一邊,而不是區別?

澄清:目錄中沒有一個是git倉庫還

+0

可能的重複[你如何合併兩個git倉庫?](http://stackoverflow.com/questions/1425892/how-do-you-merge-two-git-repositories)請注意,有很多那裏的答案都是相關的,所以確保你不要只讀第一個答案。 – 2014-10-06 07:45:43

+0

@ThomasOrozco但是,不同的目錄不是Git倉庫,所以我猜不是嗎? – Arjan 2014-10-06 08:00:47

回答

2

如果這些項目目錄不在git的回購自己,最簡單的方法是使用--work-tree選項the git command

git init newRepo 
cd newRepo 

git --work-tree=/path/to/project1 add -A . 
git commit -m "Project1" 

git --work-tree=/path/to/project2 add -A . 
git commit -m "Project2" 

的第二個添加命令將僅添加project1(已經版本化)和project2之間的增量。

最後,你需要確實需要一個git reset --hard,以使你的工作樹(你的實際git倉庫)與索引同步。

請注意,在此過程中任何git status都不起作用(因爲它會將本地空工作樹與索引進行比較,並顯示刪除結果)。

'git --work-tree=/path/to/projectx status'雖然會工作。

+0

我試過了,似乎工作得很好,但是,它還創建了一個非掛起的「已刪除:」更改列表,其中包含「刪除:」對於我添加的所有內容。如果我願意這樣做,它會恢復所有的增加,所以在最後一次提交之後,我做了一次「重置 - 硬」來防止這種情況發生,現在看起來沒問題。這是正常的行爲嗎? – Arjan 2014-10-06 09:27:49

+0

@Arjan其實我會用git -A。而不是git。,以便記錄添加,修改*和*刪除。我編輯了答案。不需要重置。 – VonC 2014-10-06 09:30:33

+0

然後同樣的事情仍然存在:http://pastebin.com/qU7GsRE7 - 它工作的很好,但只有當我直到最後一次提交,然後「重置 - 硬」時才忽略非掛起的「deleted:」。 – Arjan 2014-10-06 09:54:10