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 关注
- 1200 浏览
添加回答
举报