2013-02-08 26 views
1

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

回答

3

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

+0

非常感谢您的帮助。是否有一个git命令来手动将这些更改从回购库应用到我的工作副本中?如果有,我应该在我的回购或工作副本上运行命令吗? – Renato 2013-02-08 19:27:59

+0

'git checkout master'或者更合适的'git checkout'命令会将工作副本更新到指定的状态。在需要更新的工作副本中运行该命令(在您的情况下,它显然是服务器上的工作副本,附加到您向其推送更改的回购站)。 – wRAR 2013-02-08 19:39:30

+0

我按照你的建议运行了'git pull',然后运行了'git checkout',它运行良好。万分感谢。 – Renato 2013-02-08 20:20:12

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 

否则混帐不接受推以检出工作树进行回购。

+0

太棒了,完美的作品。非常感谢。 – Renato 2013-02-11 13:11:13