将Git仓库克隆到新仓库中 - 无需提交历史记录

将Git仓库克隆到新仓库中 - 无需提交历史记录

问题描述:

因此,我试图让我的头绕过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

您可以克隆旧仓库,如:

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

,然后你删除的git目录:

rm -R .git/ 

现在你建立新的版本:

git init 
+0

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

如果从股票回购某处克隆这些文件,你可以做:

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

这意味着:您正在考虑将/path/to/stock/repo的文件作为您的新回购的工作树(仅适用于git add步骤)

一旦新回购的索引已经记录了这些文件,您可以忘记股票回购,并在新回购库中提交这些新文件(没有任何历史记录)。

如果您已经克隆了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}`