我有一个git repo,其完整历史记录我想传递给客户,但只能到他们付款的日期。
我想要一个浅层克隆的对立面。有没有一种简单的方法来实现这一目标?
答案 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 init
,
git fetch mybundle mytag
和
git tag his_tag FETCH_HEAD
。现在,他将拥有一个名为 his_tag 标签的git存储库,显示所需的历史记录。