我正在使用push-to-deploy方法来对项目进行更改。我如何做到这一点如下:
git config receive.denyCurrentBranch false
(如果我将其设置为true,我会得到错误)以允许我从dev推送。否则我会收到错误告诉我这样做。git reset HEAD
和git checkout
。这将使用新推送的版本覆盖远程目录中的先前版本。这很好用,我对文件的更改出现在远程服务器上的签出分支中。我这样只有一个远程存储库。以前我有一个裸存储库,并使用后更新钩子将项目拉到实时目录(导致两个repos在远程 - 裸和拉回购)
无论如何,这不起作用的是我在本地开发环境中创建一个新文件并添加,提交和推送更改。我没有得到任何错误。此外,如果我再试一次,它告诉我一切都是最新的。但是,新文件不在远程服务器上。为什么呢?
我不确定新文件是否未被提交到本地git,被推送到远程或未检出。这有什么理由吗?我需要在某处指定一些选项吗?
更新
如果我尝试在我的本地仓库中检查开发中的文件,那很好。所以似乎该文件已经被提交到那里。因此,在推送到远程,然后重置/检查之间的某个时刻,我没有正确设置。
答案 0 :(得分:2)
我的建议是在远程服务器上只使用一个bare
repo并组合post-receive
hook。
钩子看起来应该是这样的:
git --work-tree=/path/to/the/live/site checkout -f master
对于丢失的文件,我想问题是你在不同的分支中提交文件,比如dev
,在实时服务器上,你正在检查这个文件不存在的分支master