gpt4 book ai didi

Git pull 依赖于当前目录

转载 作者:IT王子 更新时间:2023-10-29 01:25:50 25 4
gpt4 key购买 nike

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

例如从/root/执行git pull:

#> 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:

#> cd /
#> sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git pull
Already up-to-date.

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

如何避免冗余的cd

最佳答案

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

即使您的第二个示例也无法像您预期的那样工作。如果有实际的更改要 pull (而不是“已经是最新的”),那么 git pull 将失败,因为它找不到工作树。

您有几个简单的选择:

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

sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git fetch

这对我来说没有任何错误。

2) 你可以添加一个cd到工作树:

(cd /home/dmalikov/path/to/repo; sudo -u dmalikov git pull)

关于Git pull 依赖于当前目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9851644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com