3 回答

TA貢獻1776條經驗 獲得超12個贊
編輯:
可能有一個錯誤git pull,或者您無法使用該命令執行您想做的事情。但是,您可以通過獲取和合并來實現:
cd /X
git --git-dir=/X/Y/.git fetch
git --git-dir=/X/Y/.git --work-tree=/X/Y merge origin/master
原始答案:
假設您正在運行bash或類似程序,則可以這樣做(cd /X/Y; git pull)。
在git的手冊頁指定一些變量(請參閱“Git倉庫”),似乎像他們應該幫助,但我不能讓他們工作的權利(與我在/ tmp / ggg2庫):
GIT_WORK_TREE=/tmp/ggg2 GIT_DIR=/tmp/ggg2/.git git pull
fatal: /usr/lib/git-core/git-pull cannot be used without a working tree.
在我的cwd為/ tmp的情況下運行以下命令會更新該存儲庫,但更新的文件將顯示在/ tmp而不是工作樹/ tmp / ggg2中:
GIT_DIR=/tmp/ggg2/.git git pull
另請參見類似問題的答案,該問題演示了--git-dir和--work-tree標志。

TA貢獻1852條經驗 獲得超1個贊
從git 1.8.5(2013年第四季度)開始,您將能夠“使用Git命令,而不必更改目錄”。
就像“ make -C <directory>”一樣,“ git -C <directory> ...”告訴Git在做其他事情之前要去那里。
見提交44e1e4由納茲里Ramliy:
在不離開當前目錄的情況下,需要更多的按鍵才能調用其他目錄中的Git命令:
(cd ~/foo && git status)
git --git-dir=~/foo/.git --work-tree=~/foo status
GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status
(cd ../..; git grep foo)
for d in d1 d2 d3; do (cd $d && git svn rebase); done
上面顯示的方法可用于腳本編寫,但對于快速命令行調用而言則過于繁瑣。
使用此新選項,可以用更少的擊鍵完成上述操作:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
自Git 2.3.4(2015年3月)以來,由Karthik Nayak()提交6a536e2,將在空時將“ ”視為無操作。KarthikNayakgitgit -C '<path>'<path>
' git -C ""'無故死于錯誤“ Cannot change to ''”,而shell將cd“”“視為無操作。
以shell的行為為先例,還教導git將-C“”'視為無操作。
4年后,Git 2.23(Q3 2019)證明了' git -C ""'有效并且不會更改目錄
自6a536e2以來,它的行為一直如此(git:空git -C '<path>'時將“ ”視為無操作<path>,2015-03-06,Git v2.3.4)。
這意味著現在(最終)的文檔包括:
如果' <path>'存在但為空,例如-C "",則當前工作目錄保持不變。
- 3 回答
- 0 關注
- 1244 瀏覽
添加回答
舉報