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

问题描述:

我有我的服务器和两个克隆我的主要回购。如何通过shell脚本运行git命令?

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

我正在经历的当前例程是编辑本地 - >登录到我的服务器到公用文件夹,并执行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

我将获得公共文件夹的内容(所以我移动到正确的地方)感谢先进!

UPDATE:

应该提到我有和没有尝试这种蜱

+0

您的.git文件夹位于何处? – kalyan 2011-04-23 04:49:55

首先尝试在执行git pull或测试git状态之前取消设置GIT_DIR env变量。

unset GIT_DIR 
+0

就是这样,现在只需绕过遥控器:Permission denied(publickey)。 – jasonsemko 2011-04-23 05:01:50

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

我想你想要这样的:

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

的反引号是用来捕捉shell变量的命令的输出,例如:

x=`ls` 

将投入ls输出入变量x

+0

这或类似是我最好的方式。我发现,从shell脚本运行时,git的行为有所不同。 -C选项不起作用,我必须在你的git命令前添加一个cd到相关的目录。 – PKCLsoft 2017-11-09 04:52:44