如何通过shell脚本运行git命令?

时间:2011-04-23 04:46:10

标签: git shell command

我的服务器上有我的主要仓库和两个克隆。

我的本​​地有一个克隆用于编辑。另一个副本位于我公共文件夹中的服务器上以提取更改并实时查看它们。

我正在进行的当前例程是编辑本地 - >登录到我的服务器到公用文件夹并执行git pull以查看更新的更改。

我想使用git hooks“post-receive”shell脚本更改为公共文件夹并执行git pull origin master ...我似乎无法弄清楚如何正确执行此操作。我试过这个:

cd /home/demo/public_html/example.com/public/ && `git status`

但我得到的回报是“不是存储库”

但是,如果我运行cd /home/demo/public_html/example.com/public/ && ls

我将获取公共文件夹的内容(所以我要搬到正确的地方)谢谢你提前!

更新:

本来应该提到过我在尝试使用和不使用刻度线

3 个答案:

答案 0 :(得分:3)

首先尝试在执行git pull或git status for test之前取消设置GIT_DIR env变量。

unset GIT_DIR

答案 1 :(得分:2)

我想你想要这个:

cd /home/demo/public_html/example.com/public/ && git status

反引号用于捕获shell变量中命令的输出,例如:

x=`ls`

会将ls的输出放入变量x

答案 2 :(得分:1)

你实际上是在git status附近加入反引号吗?也就是说,您在撰写cd ... && `git status`还是cd ... && git status?如果您正在编写第一个,那么正在做的是评估git status命令,然后尝试将其结果解释为另一个要执行的命令。删除反引号,你应该得到git status的结果,而不是错误,因为它试图将其结果解释为命令。