首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Git拉取取决于当前目录

Git拉取取决于当前目录
EN

Stack Overflow用户
提问于 2012-03-24 20:12:29
回答 3查看 11.1K关注 0票数 18

我正在尝试通过根用户从任何目录git pull一些存储库。

例如,从/root/执行git pull

代码语言:javascript
复制
#> cd ~
#> sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git pull 
/usr/libexec/git-core/git-sh-setup: line 142: cd: /root/.: Permission denied
Cannot chdir to /root/., the toplevel of the working tree

并从/执行git pull

代码语言:javascript
复制
#> cd /
#> sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git pull 
Already up-to-date.

为什么当前目录会影响git pulling命令?

如何避免冗余的cd

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-27 01:35:58

在第一个示例中,git命令以当前目录/rootdmalikov用户身份运行。由于git pull命令相当于git fetch后跟git merge,并且由于git merge在工作树上操作,因此git会尝试寻找工作树。由于该用户没有cd /root权限,git命令将失败。

即使你的第二个例子也不会像你期望的那样工作。如果要拉取实际的更改(而不是“已更新”),则git pull将失败,因为它找不到工作树。

您有几个简单的选项:

1)您可以通过执行以下操作来执行操作的git fetch部分:

代码语言:javascript
复制
sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git fetch

这不会给我带来任何错误。

2)您可以在工作树中添加cd

代码语言:javascript
复制
(cd /home/dmalikov/path/to/repo; sudo -u dmalikov git pull)
票数 18
EN

Stack Overflow用户

发布于 2012-03-27 02:57:28

为了回答我自己的评论,/root是一个有趣的错误

要让它与--git-dir一起工作,您还需要指定一个工作树目录

代码语言:javascript
复制
sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git --work-tree=/home/dmalikov/path/to/repo/.git pull
票数 3
EN

Stack Overflow用户

发布于 2012-03-24 20:41:20

我不认为当你用一个没有权限将目录切换回当前目录的用户运行git时,避免这张cd是可能的,也就是/root。/ as当前目录显然是有效的,因为每个人都有权限更改到该目录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9851644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档