应用从git进行的更改

时间:2013-02-08 19:13:56

标签: git

我试图改变我的工作流程并开始使用git而不是ftp。我选择Tower来管理我的本地存储库。我在我的服务器上创建了一个裸git并通过Tower克隆它。到现在为止还挺好。当我提交并推送我的更改时,我的文件不会更新(我通过FTP打开它们并且它们没有更改)。所以我删除了我的本地仓库并从远程服务器克隆,并且更改在那里,文件被更改。有没有人有任何想法为什么会这样?提前谢谢。

2 个答案:

答案 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不会接受使用签出的工作树推送回购。