【发布时间】:2011-03-22 20:41:56
【问题描述】:
这有点奇怪,所以我在远程 git repo 钩子脚本 post-receive 中有这一行:
cd /path/to/my/deployed/app
git reset --hard
rm files/.development
然后从我的本地机器推送到我的 git 存储库 - 这就是奇怪的地方。在我的 post-receive 末尾的那些行是在我的本地机器上执行的,而不是在我的远程服务器上??
显然我最终得到了这个错误:
MacBook-Air:$ git push to-my-deployed-app
Counting objects: 23, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (16/16), 2.56 KiB, done.
Total 16 (delta 11), reused 0 (delta 0)
remote: warning: updating the current branch
remote: fatal: Not a git repository: '.'
remote: rm: cannot remove `files/.development': No such file or directory
所以……很奇怪……
【问题讨论】:
-
如果您正在推送到非裸存储库并尝试在推送后使用此钩子更新工作树,那么您应该考虑“Why won't I see changes in the remote repo after "git push"?” Git FAQ 中链接的
post-update脚本.它通过在重置之前存储来处理脏工作树(因此您至少有机会恢复直接在服务器上(Git 之外)进行的任何更改)。 -
感谢您的帮助。虽然我不需要担心我们的服务器上有一颗脏树,因为它是一个实时存储库,没有人在那里开发,但每个人都只是推送到那个实时存储库。我只想让我的钩子脚本正确执行——更新工作树。请参阅下面我对马克的最后评论。谢谢!