Git存储库没有历史记录

时间:2014-12-20 13:40:53

标签: git deployment

是否可以拥有没有历史记录的Git存储库?例如,我有一个本地Git存储库,我工作,我想将最新版本推送到生产服务器。不应在生产服务器上存储历史记录。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

您可以查看命令git archive是否适合帐单:

  

创建包含指定树的树结构的指定格式的存档,并将其写入标准输出。
  如果指定了<prefix>,则会将其添加到存档中的文件名。

     给定树ID时,

git archive的行为与给定提交ID或标记ID时的行为不同。

     
      
  • 在第一种情况下,当前时间用作存档中每个文件的修改时间。
  •   
  • 在后一种情况下,使用引用的提交对象中记录的提交时间。
  •   

创建存档后,您可以将其复制并在服务器端解压缩:服务器上不需要git。
由于您只需要复制一个文件(而不是通过工作树复制大量带有rsync的文件),因此传输更容易。

答案 1 :(得分:0)

你想要的是post-receivepost-commit钩子:

  • 如果您纯粹在本地工作并且从不在任何地方推送任何东西,请使用post-commit挂钩。它会在每次提交后触发,让您有机会做任何您想做的事情,包括使用您想要的任何工具将最新更改的文件推送到某个地方(包括git archiveVonC recommends

  • 如果您将工作的“发布”版本推送到远程服务器(或其他本地祝福 repo,对于这种情况无关紧要),请使用{{1 }钩子。在推送新版本时,它会在服务器存储库上调用。从这里开始,该过程几乎与post-receive钩子相同。

有关钩子的深入讨论,请查看Git Book和参考: