题
如果我有一个 git 存储库的克隆作为远程服务器上的缓存副本用于 capistrano/vlad 样式部署,那么最好执行 A)
git archive --format=tar origin/master | (cd #{destination} && tar xf -)
或 B)
cp -R cached-copy #{destination} && rm -Rf #{destination}/.git
澄清一下,存储库已经位于远程服务器上,我只想在部署期间将特定版本复制到同一服务器上的发布目录。
解决方案
其实我说
rsync -avP /local/repo/* server:/remote/repo
这工作,只要它是确定为跳过所有的点文件在回购,不仅.git
。如果你想跳过的只有的.git
那么你需要的-f
选项和手册页。
我爱 rsync的。伟大工程,大部分时候,你可以使用它,就像你使用scp!
其他提示
<强> A)强>
您节省传输.git目录的网络开销,这有可能是相当大的取决于有多少历史和当前HEAD对象没有。
如果你曾经想对远端实际的Git仓库,你最好推到一个真正的仓库,只需要改变增量。
两者都不!
更好的方法是:
git fetch
你的缓存- 将缓存克隆到当前目录(使用
--no-checkout
选项已启用) - 检查你想要的提交。
当您进行本地克隆时,Git 使用硬链接。这意味着,除非您修改文件(您不会这样做),否则您可以进行 1,000 个部署,并且(实际上)仅使用一个部署所需的空间。这种方式归档或 rsync 的速度也快得多。
不隶属于 StackOverflow