获得完整的git历史记录到特定日期

时间:2016-06-06 05:15:54

标签: git

我有一个git repo,其完整历史记录我想传递给客户,但只能到他们付款的日期。

我想要一个浅层克隆的对立面。有没有一种简单的方法来实现这一目标?

3 个答案:

答案 0 :(得分:1)

您可以尝试在截止日期之前检查发生的最新提交:

git checkout `git rev-list -n 1 --before="2016-01-01 00:00" master`

然后创建一个新分支:

git checkout -b master_for_client

您现在可以将此分支发送给您的客户。

答案 1 :(得分:0)

创建一个空的Git存储库(git init --bare),然后将所需的历史记录推送到它:

git push /path/to/new/repo <commit-id>:refs/heads/master

然后,cd到此存储库并重新打包(不是严格需要,但可能有帮助):

git gc --prune=now

要仔细检查:转到新的存储库并检查您是否没有任何其他分支(如果您应用上述配方,则不会,但以防万一):

git for-each-ref

答案 2 :(得分:0)

这就是我要做的事情:

创建您希望为客户提供的最新(=最新)提交的标记(或分支):

git tag mytag [commit_hash]

然后使用 git bundle ,然后运行:

git bundle create mybundle mytag

现在您将拥有一个捆绑文件(名为 mybundle ),其中包含所有历史记录。将此文件提供给客户。

客户应将 mybundle 复制到空目录中,然后运行: git initgit fetch mybundle mytaggit tag his_tag FETCH_HEAD。现在,他将拥有一个名为 his_tag 标签的git存储库,显示所需的历史记录。