我有以下问题。我已经更新了'post-receive'脚本,让它进入特定的目录并拉取代码库来进行部署:
#!/bin/bash
cd /var/www/site
git pull origin master
但是,每当我在本地机器上执行 'git push origin master' 操作时,我会得到以下输出:
Counting objects: 5, done.
Delta compression using up to 2 threads.
(etc..)
remote: fatal: Not a git repository: '.'
然而,当我手动执行 cd /var/www/site
并执行 git pull origin master
时,它表现得非常出色。
GIT_DIR
是你可以为各种git命令设置的少数环境变量之一。在post-receive钩子中,$GIT_DIR
始终(?)设置为.
。如果你cd
到其他地方,git pull
仍然看到$GIT_DIR
设置为.
并期望在.
中找到repo,但你已经移动了它并不在那里。清除它将使git恢复到其“正常”行为(查看./.git
,在你cd
到的位置)。 - torekGIT_DIR
直接设置为当前目录,而不是先重置GIT_DIR
,再单独进入工作目录?如果这就是GIT_DIR
的设计初衷,那么重置GIT_DIR
然后再进入工作目录似乎有些多余。这样做的原因是什么? - Hashim Aziz