2014-11-14 172 views
6

因此,我試圖讓我的頭繞過Git,並且有需要(爲什麼我有這個需求我不會進入)能夠採取文件從一個回購,通過命令行,並將它們放入一個全新的存儲庫,沒有采取所有以前的提交歷史。將Git倉庫克隆到新倉庫中 - 無需提交歷史記錄

我現在想要做的是git init創建一個新的存儲庫,然後從我現有的存儲庫中獲取文件,無論是使用克隆還是子樹(我還沒有充分考慮這個問題,可能會吠叫錯誤的樹),然後添加,提交,然後將它們推送到我的新存儲庫。

git init 
--- get the files from stock repo --- 
git add . 
git commit -m 'Initial commit' 
git remote add origin <url of my new repo> 
git push -u origin master 

我的倉庫都在到位桶,如果有差別,

+0

你能不能只是rsync的其他地方的文件,然後'混帳init'呢? – 2014-11-14 18:30:24

+0

是的,如果在回購中有過多的發誓詞和這樣的話,它看起來不專業:P – 2014-11-14 18:31:53

回答

14

您可以克隆舊倉庫,如:

git clone [email protected]:username/repository.git 

,然後你刪除的git目錄:

rm -R .git/ 

現在你建立新的版本:

git init 
+0

工作完美,謝謝! – Tom 2014-11-17 14:12:38

1

如果從股票回購某處克隆這些文件,你可以做:

cd yourNewRepo 
git --work-tree=/path/to/stock/repo add . 
git commit -m 'Initial commit' 

這意味着:您正在考慮將/path/to/stock/repo的文件作爲您的新回購的工作樹(僅適用於git add步驟)

一旦新回購的索引已經記錄了這些文件,您可以忘記股票回購,並在新回購庫中提交這些新文件(沒有任何歷史記錄)。

1

如果您已經克隆了TMI repo,您​​可以重置您的克隆主人,使其只有那個人的提示才能提交歷史記錄y與

git branch -f master `git commit-tree -m "My new initial commit" origin/master^{tree}` 

然後按照慣例,修復遙控器和推送歷史,只要你喜歡。

編輯:如果你已經有了主人簽出git branch不會想重寫裁判,但你不接觸的內容可言,所以你可以繞過所有瓷器的手把手的指導,並就去做

git update-ref -m "Truncating history" refs/heads/master \ 
     `git commit-tree -m "My new initial commit" origin/master^{tree}`