如何通过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:
应该提到我有和没有尝试这种蜱
首先尝试在执行git pull或测试git状态之前取消设置GIT_DIR env变量。
unset GIT_DIR
就是这样,现在只需绕过遥控器: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
。
这或类似是我最好的方式。我发现,从shell脚本运行时,git的行为有所不同。 -C选项不起作用,我必须在你的git命令前添加一个cd到相关的目录。 – PKCLsoft 2017-11-09 04:52:44
您的.git文件夹位于何处? – kalyan 2011-04-23 04:49:55