亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不在git目錄中時進行git pull

不在git目錄中時進行git pull

Git
汪汪一只貓 2019-12-10 13:08:06
假設我有一個目錄/X/Y,這是一個git存儲庫。是否可以通過某種方式調用git pull來自inside 的命令/X,但以/X/Y目錄為目標?編輯:我想我特別想知道:是否可以使用git命令來執行此操作,而不必更改目錄?
查看完整描述

3 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

編輯:


可能有一個錯誤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標志。



查看完整回答
反對 回復 2019-12-11
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

從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 "",則當前工作目錄保持不變。



查看完整回答
反對 回復 2019-12-11
  • 3 回答
  • 0 關注
  • 485 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號