2012-02-06 79 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