2012-02-06 69 views
8

我想运行一个git pull并指定目录。有人说用--git-DIR和 - 共同努力树应该工作,但如Git拉和指定目录?

git --git-dir=/var/www/.git --work-tree=/var/www pull 

把这个返回“不能没有工作树中使用”。唯一一次我能得到这个工作是如果我使用“。”,“..”或当前目录之上的任何目录

这篇文章暗示可能是一个错误? git pull while not in a git directory

最后我需要在一行中运行sudo git pull。我欢迎任何工作。谢谢

回答

9

使用sudo并将该命令作为参数sh?

喜欢的东西:

sudo sh -c 'cd /dir && git pull' 
+0

完美!非常感谢。结合w/-i开关并在.bash_profile中找到.bashrc文件,我甚至可以在私钥上输入密码。完整的命令是[code](sudo -i -u www-data sh -c'cd/var/www && git pull') – jadent 2012-02-06 23:06:14

+0

你也可以用pushd&popd来包装它 – 2012-02-07 00:14:52

0

您正在使用--work-dir,这是不正确的参数中。这是--work-tree,应该为你想要的。或者,如果您希望将拉放在单个命令/行中,则可以执行cd /var/www && git pull

+0

对不起,我正在使用--work-树参数,当我得到该错误(没有复制命令)。例如:[code](git --git-dir =/var/www/.git --work-dir =/var/www pull)。 我发现其他职位似乎有同样的问题。没有指定--work-tree它使用我的主目录。我可以将--work-tree指定为“。”,“..”,“../ ..”(这是/ dir),但是一旦我去任何地方它就会抛出“不能使用没有工作树“。即使使用“../../var/www”也会抛出错误 – jadent 2012-02-06 16:27:40

16

在两年前,这个问题得到回答,Git的1.8出来了,它支持使用-C标志调用其他目录git

git -C /var/www pull 
+3

'git -C'文档链接:https://git-scm.com/docs/git#git--Cltpathgt – cgaldiolo 2017-02-06 17:47:45

0

在Windows中MINGW64:

git -C "C:\Trunk190117\crewcontrol-source" pull 

git -C /c/Trunk190117/crewcontrol-source pull