2011-12-08 191 views
3

我最近在創建新項目時開始使用Git,直到那時我只是通過壓縮每個人和每個人的源代碼來定期備份項目。所以我現在每個(舊)項目都有幾個DD.MM.YYYY.zip文件 - 每個項目只有一個分支。將現有項目遷移到git

現在我想擺脫所有這些.zip文件並將所有內容移植到Git。這是我想到的:

Create a new repository. 

    git init 

Copy the files from the oldest .zip file into the repository. 

    git add ... 
    git commit ... 

Delete the files copied from the oldest .zip file. 
Copy the files from the second oldest .zip file into the repository. 

    git add ... 
    git commit ... 

Delete the files copied from the second oldest .zip file. 
... 

這是否正常工作?有沒有更好的解決方案來實現我想要的?


附加:
對於一些(舊)項目,我開始用最新的來源和持續編程一個Git倉庫。對於這些項目,還有一些DD.MM.YYYY.zip文件正在放置 - 有什麼方法可以對項目的開始執行提交嗎? (可能是一個愚蠢的問題,但隨時給我建議別的東西。)

回答

3

如果你這樣做會的工作,每一個新的工作樹內容(每個存檔解壓縮):

git add -A . 

也就是說,如果你要求Git添加新的和修改的文件,並刪除不再存在的文件。

對於額外的部分,你可以做一個orphan branch,導入你的壓縮歷史,然後重新綁定你的當前分支。

+0

關於附加部分:我創建了一個新的(孤兒)分支,稱爲(例如)'legacy',然後在其上重新設置'master'?我平時的工作分支是不是被稱爲「遺產」? –

1

如前所述 - 你可以很容易地將zip檔案轉換成git存儲庫。

爲了將一些新開發與另一個相關但不相同的存儲庫合併,您可以將這兩個鏈接合併爲一個。可能衍合是你所需要的,但我這樣做,當我用下面的命令,並在blog article張貼多一點討論

git remote add jdc file:///opt/src/tile-qt-jdc 
git fetch jdc 
git ls-tree 1519481 
git read-tree -m 1519481 
git checkout-index -f -u -a 

read-tree是該指數設定爲定樹一種有趣的方式。也有'嫁接',但這些似乎並沒有對我有用。