我正在git pull通过root用户从任何目录尝试某个存储库.
例如,在执行git pull从/root/:
#> 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
Run Code Online (Sandbox Code Playgroud)
并执行git pull来自/:
#> cd /
#> sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git pull
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)
为什么当前目录会影响git pull命令?
如何cd避免多余的?
amc*_*abb 17
在第一个示例中,git命令以dmalikov具有当前目录的用户身份运行/root.由于该git pull命令等效于git fetch后跟a git merge,并且由于git merge在工作树上运行,因此git尝试寻找工作树.由于此用户没有权限cd /root,git命令失败.
即使你的第二个例子也没有像你期望的那样工作.如果要实际更改(而不是"已经是最新的"),那么git pull将失败,因为它找不到工作树.
你有几个简单的选择:
1)您可以git fetch通过执行以下操作来执行操作的一部分:
sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git fetch
Run Code Online (Sandbox Code Playgroud)
这对我没有任何错误.
2)您可以添加cd到工作树:
(cd /home/dmalikov/path/to/repo; sudo -u dmalikov git pull)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10314 次 |
| 最近记录: |