1

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

4

2 回答 2

3

您需要了解工作副本(包含签出文件)和存储库(包含提交并在推送时更新)之间的区别。如果您想在相关存储库收到新提交时更新工作副本,您可能需要编写一个post-receive钩子。

于 2013-02-08T19:17:12.093 回答
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 将不接受使用已签出的工作树推送到 repo。

于 2013-02-09T16:24:33.310 回答