是否可以拥有没有历史记录的Git存储库?例如,我有一个本地Git存储库,我工作,我想将最新版本推送到生产服务器。不应在生产服务器上存储历史记录。我怎么能这样做?
答案 0 :(得分:4)
您可以查看命令git archive
是否适合帐单:
创建包含指定树的树结构的指定格式的存档,并将其写入标准输出。
给定树ID时,
如果指定了<prefix>
,则会将其添加到存档中的文件名。
git archive
的行为与给定提交ID或标记ID时的行为不同。
- 在第一种情况下,当前时间用作存档中每个文件的修改时间。
- 在后一种情况下,使用引用的提交对象中记录的提交时间。
创建存档后,您可以将其复制并在服务器端解压缩:服务器上不需要git。
由于您只需要复制一个文件(而不是通过工作树复制大量带有rsync的文件),因此传输更容易。
答案 1 :(得分:0)
你想要的是post-receive
或post-commit
钩子:
如果您纯粹在本地工作并且从不在任何地方推送任何东西,请使用post-commit
挂钩。它会在每次提交后触发,让您有机会做任何您想做的事情,包括使用您想要的任何工具将最新更改的文件推送到某个地方(包括git archive
为VonC recommends)
如果您将工作的“发布”版本推送到远程服务器(或其他本地祝福 repo,对于这种情况无关紧要),请使用{{1 }钩子。在推送新版本时,它会在服务器存储库上调用。从这里开始,该过程几乎与post-receive
钩子相同。
有关钩子的深入讨论,请查看Git Book和参考: