git快照只推送以节省空间

时间:2017-07-26 15:17:53

标签: git

我知道git是用于版本控制的,因此它将始终保持历史记录。 但是对于某些用例,我希望将历史保存在我的本地git存储库中,但只将快照推送到远程git服务器,例如github。

为了节省github中的空间,我希望github中的git只保存最新的快照但没有任何历史记录提交。我可以使用" git commit --amend"每次只使用一次提交,但我不确定它是否真的像一个快照而没有任何其他开销从空间角度来看。

在下图中,我希望将客户端和服务器都恢复到1M而不是11M(红色备注框)。 当然,我之前并不关心任何历史!

enter image description here

2 个答案:

答案 0 :(得分:1)

在这篇文章中,使用git archive(无历史记录)或git bundle(完整历史记录),只创建一个文件,并将该文件存储在其他位置是最简单的解决方案。

无需推送:您只需要存储一个文件(存档或包)。

答案 1 :(得分:0)

git update-ref refs/heads/latest $(
        git commit-tree -m 'your message here' $(git write-tree)
)
git push -f origin latest

将推送当前结帐+任何添加的提交,并在此处和远程设置latest分支。你甚至可以

git push -f origin $(git commit-tree -m 'your message here' @:):refs/heads/latest

如果您想将当前已检出的又名HEAD又名@提交内容切片为远程latest提交。

顺便说一句,你不必使用远程名称或网址进行回购,只是简单的路径名也可以使用。即使.也有效。将尖端从master分支局部切片的最短路径有点令人不安,但它很可爱:

git push -f . $(git commit-tree -m 'your message here' master:):refs/heads/latest

然后你可以在检查它是否正确之后git push -f origin latest

要查看遥控器的内容,

git ls-remote origin   # as everywhere, a path or url will work too