虽然这是相当古老,它是非常灰心,推到一个工作树。 https://git.wiki.kernel.org/index.php/GitFaq#Unexpected_behavior
更好的方法是创建一个裸露的回购镜像网站的工作树。
所有裸回购是,是没有工作树或没有检出文件的存储库。层次结构存在所有考虑事项并可以检出。换句话说,它只能作为主机进行更改。
不知道你与你的网站,我会承担它的工作目录层次是利用chroot的家 一个标准的网站布局EG:/ home/user中/ WWW
使用SSH与服务器安装的git:
创建当前网站的工作树
cd /home/user/public_html
git init
git add .
git commit -m "Initial Commit"
从本地系统创建一个纯仓库到远程推
mkdir /home/user/deploy.git
cd /home/user/deploy.git
git init --bare
链接你的工作树库和裸露的部署库
cd /home/user/public_html
git remote add deploy /home/user/deploy.git
git remote show deploy
* remote deploy
URL: /home/user/deploy.git
git push deploy master
现在成立了一个新的回购您的本地系统上
git clone ssh://[email protected]/home/user/deploy.git
git branch -a
*master
remotes/origin/HEAD
remotes/origin/master
现在我们设置2钩立即更改您的网络远程回购当你推动它或如果别人你给予访问推动它。由于混帐配置receive.denyCurrentBranch不理会带来麻烦,从长远来看
在远程服务器上启用部署更新后的
cd /home/user/deploy.git/hooks
mv post-update.sample post-update
vi post-update
更改您的post-update挂钩到以下和保存
#!/bin/sh
echo "Pulling changes into public_html [deploy post-update]"
cd /home/user/public_html || exit
unset GIT_DIR
git pull deploy master
exec git update-server-info
现在,我们设置您的Web工作树,以推动其部署的更改,如果有事情承诺它。
cd /home/user/public_html/.git/hooks
mv post-commit.sample post-commit
vi post-commit
然后改变post-commit钩子以下
#!/bin/sh
echo "Pushing changes to deploy [public_html post-commit]"
git push deploy
你还有如果你需要检出您的网络工作树的选项。 当您推送本地系统的主服务器时,这将允许您将更改从部署部署到Web的工作树。 您可以在不影响网络工作树的情况下分支,重新绑定,还原等,而不用担心冲突标记,而只需使用裸露的部署存储库。 如果您需要更多控制承诺的内容,则可以使用post-receive而不是更新后的版本。
希望这可以帮助别人寻找和OP一样的东西。
嗯,我所需要的一切都是recieve.denyCurrentBranch。谢谢:) – yasar
@ yasar11732,请务必阅读有关保持工作目录最新的注意事项。没有它,你推动的变化将反映在Git的历史记录中,但不一定是你的网站的检出分支。 – shelhamer
phew,这对我来说是一项艰巨的工作,但仍然将其取消。谢谢! – yasar