我知道git是用于版本控制的,因此它将始终保持历史记录。 但是对于某些用例,我希望将历史保存在我的本地git存储库中,但只将快照推送到远程git服务器,例如github。
为了节省github中的空间,我希望github中的git只保存最新的快照但没有任何历史记录提交。我可以使用" git commit --amend"每次只使用一次提交,但我不确定它是否真的像一个快照而没有任何其他开销从空间角度来看。
在下图中,我希望将客户端和服务器都恢复到1M而不是11M(红色备注框)。 当然,我之前并不关心任何历史!
答案 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