我使用 git 来跟踪项目中的更改。前几个提交都是关于设置环境并包含一堆插件以获得一个裸框架。
我如何从现有项目中的一个旧提交开始一个新项目?
我使用 git 来跟踪项目中的更改。前几个提交都是关于设置环境并包含一堆插件以获得一个裸框架。
我如何从现有项目中的一个旧提交开始一个新项目?
你可以使用git archive
:
git archive --format=zip --prefix MyNewProj/ <oldcommit> -o ../basicproject.zip
cd ..
unzip basicproject.zip
cd MyNewProj
git init
这将在 commit 处创建所有跟踪文件(不是任何被忽略的文件,如二进制文件)的 zip 存档<oldcommit>
。然后您可以将其解压缩到一个新项目中。
您可以从任何旧点创建分支:
git checkout -b topic <oldpoint>
请注意,在非常大的 repo 上使用 zip 格式可能会出现问题,具体取决于所使用的解压缩软件(尤其是在 Windows 上)。
这就是 git 2.6 (Q3/Q4 2005) 解决的问题:
请参阅René Scharfe 的commit 88329ca、commit 0f747f9、commit 19ee294(2015 年 8 月 22 日)。
推荐人:Johannes Schauer。
(由Junio C Hamano 合并 -- gitster
--在提交 565f575中,2015 年 9 月 1 日)
archive-zip
: 支持超过 65535 个条目通过在通常的“中央目录记录结尾”(仅包含 16 位字段)之前写入“中央目录记录的 zip64 结尾”(条目数为 64 位字段),干净地支持超过 65535 个条目.
InfoZIP 的 zip 也是如此。
条目数为 65535 或更少的档案不受影响。提取所有文件(如 InfoZIP 的 zip 和 7-Zip)的程序会忽略该字段,并且已经可以提取所有文件。
依赖 ZIP 文件目录快速显示包含文件列表以模拟到普通目录的软件,如 Windows 的内置 ZIP 功能,只能看到包含文件的子集。Windows从 Vista 开始支持 ZIP64。
在这里,这无关紧要,除非提交非常大。