如何将旧提交克隆到新的回购中?

时间:2013-06-12 03:12:27

标签: git bitbucket atlassian-sourcetree

我使用git来跟踪项目中的更改。前几个提交都是关于设置环境并包含一堆插件来获得一个裸框架。

如何从现有项目的旧提交开始创建一个新项目?

3 个答案:

答案 0 :(得分:1)

您可以使用git archive

git archive --format=zip --prefix MyNewProj/ <oldcommit> -o ../basicproject.zip
cd ..
unzip basicproject.zip
cd MyNewProj
git init

这将在提交<oldcommit>创建所有跟踪文件的zip存档(不是任何被忽略的,如二进制文件)。然后你可以将它解压缩到一个新项目中。

答案 1 :(得分:0)

您可以从任何旧点创建分支:

git checkout -b topic <oldpoint>

答案 2 :(得分:0)

请注意,使用zip格式在非常大型仓库中可能会出现问题,具体取决于所使用的解压缩软件(特别是在Windows上)。
这就是git 2.6(Q3 / Q4 2005)所说的:

RenéScharfe,请参阅commit 88329cacommit 0f747f9commit 19ee294(2015年8月22日)。
建议:Johannes Schauer Junio C Hamano -- gitster --合并于commit 565f575,2015年9月1日)

  

archive-zip:支持超过65535个条目

     

在通常的“中央目录记录结束”之前,通过写一个“中心目录记录的zip64端”(条目数为64位字段)来干净地支持超过65535个条目(其中只包含一个16-比特场)   InfoZIP的拉链也是如此   具有65535或更少条目的档案不受影响。

     

提取所有文件(如InfoZIP的zip和7-Zip)的程序忽略了该字段,并且可以提取所有文件。
  依赖ZIP文件目录显示包含列表的软件   文件快速模拟到正常目录,如Windows'内置ZIP功能只看到包含文件的子集

     

Windows supports ZIP64 since Vista

在这里,这应该不重要,除非提交是非常大的。