我试图改变我的工作流程并开始使用git而不是ftp。我选择Tower来管理我的本地存储库。我在我的服务器上创建了一个裸git并通过Tower克隆它。到现在为止还挺好。当我提交并推送我的更改时,我的文件不会更新(我通过FTP打开它们并且它们没有更改)。所以我删除了我的本地仓库并从远程服务器克隆,并且更改在那里,文件被更改。有没有人有任何想法为什么会这样?提前谢谢。
答案 0 :(得分:3)
您需要了解工作副本(包含签出文件)和repo(包含提交并在推送时获得更新)之间的差异。如果要在相关存储库收到新提交时更新工作副本,则可能需要编写post-receive
挂钩。
答案 1 :(得分:1)
我正在使用类似的方法来部署我的主页。这是我的post-receive
钩子的样子:
#!/bin/sh -eu
export GIT_DIR=/path/to/bare-git-repo
export GIT_WORK_TREE=/path/to/working-tree
cd "$GIT_WORK_TREE"
git reset --hard
git checkout
请注意,我正在使用单独的目录来获取git裸存储库本身及其工作树;如果你有.git
子目录的工作树,这应该足够了:
$ cat .git/hooks/post-receive
#!/bin/sh -eu
git checkout -f
您还必须在接收存储库端:
执行此命令一次git config receive.denyCurrentBranch ignore
否则git不会接受使用签出的工作树推送回购。