我在Dreamhost上有一个帐户,他们有关于使用Git跟踪自定义WordPress主题中的文件的说明。他们的指示https://help.dreamhost.com/hc/en-us/articles/227816388-Using-Git-with-DreamPress与其他许多建议相同的网站相同。例如,http://git-memo.readthedocs.io/en/latest/deploy.html
您在一个裸的repo的hooks/post-receive
目录中放入一个可执行脚本,它会调用一个git" checkout -f"。这是示例脚本
#!/bin/sh
GIT_WORK_TREE=/home/user/theme-directory git checkout -f
这是我不明白的。为什么"结账-f"?这只会更改被跟踪分支的名称,但它不会使其更新。不应该拉新(或获取)新内容吗?结帐有多于我的权力吗?
答案 0 :(得分:1)
post-receive
是server-side hook,将在git push
上执行。
所以不需要拉动:客户端推送一些内容,然后在服务器上签出。
为什么"结帐-f"?
首先," checkout -f
"实际上是checkout -f @
或checkout -f HEAD
:它会检查现在的HEAD(推送后)。
其次,--force
option确保切换分支成功,即使索引或工作树与HEAD不同(因为推送只是改变了HEAD)
但我会尝试改为
GIT_WORK_TREE=/home/user/theme-directory git checkout -f -- .
那就是:specifying a pathspec,它将通过替换索引中的内容或(通常是提交,这里:HEAD,在推送后刚刚更改)来覆盖工作树中的路径。