Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 根用户作为另一个用户拉入git的脚本_Linux_Git_Bash_Ubuntu - Fatal编程技术网

Linux 根用户作为另一个用户拉入git的脚本

Linux 根用户作为另一个用户拉入git的脚本,linux,git,bash,ubuntu,Linux,Git,Bash,Ubuntu,我有一个脚本,我想在另一个用户的git目录中进行git拉取。此脚本由root用户运行。例如: cd /home/username/GitProject sudo -u username -i git pull 当我运行此程序时,我得到: fatal: Not a git repository (or any of the parent directories): .git 有没有办法让我的脚本以username的身份执行git拉取操作?尝试不使用sudo的-i选项。该选项被记录为第一次更改目

我有一个脚本,我想在另一个用户的git目录中进行git拉取。此脚本由root用户运行。例如:

cd /home/username/GitProject
sudo -u username -i git pull
当我运行此程序时,我得到:

fatal: Not a git repository (or any of the parent directories): .git

有没有办法让我的脚本以
username
的身份执行git拉取操作?

尝试不使用sudo的
-i
选项。该选项被记录为第一次更改目标用户的主目录,这将撤消在此之前您非常小心地进行的目录更改。或者,使用git的适当选项指定目录,如下所示:

sudo -u username -i git --git-dir=/home/username/GitProject/.git --work-tree=/home/username/GitProject pull

这可以不用sudo完成。这假设您的ssh密钥没有密码,因为您正在谈论脚本。以下是失败的原因:

# git clone <user>@<host>:/path/to/repo
Cloning into 'repo'...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
下面是用于克隆到主目录的实际命令以及一些额外的证明:

# su - $MYUSER -c "git clone <user>@<host>:/path/to/repo"
Cloning into 'repo'...
remote: Counting objects: 13, done.
<..>

# ls -l /home/$MYUSER/repo/.git/config
-rw-r--r-- 1 somebody somebody 275 Nov  8 23:55 /home/somebody/repo/.git/config

# su - $MYUSER -c "cd ~/repo; git remote -v"
origin <user>@<host>:/path/to/repo (fetch)
origin <user>@<host>:/path/to/repo (push)

# su - $MYUSER -c "cd ~/repo; git pull"
Already up-to-date.
#su-$MYUSER-c“git clone@:/path/to/repo”
克隆到“repo”。。。
远程:计数对象:13,完成。
#ls-l/home/$MYUSER/repo/.git/config
-rw-r--r--1某人某人275 11月8日23:55/home/someone/repo/.git/config
#su-$MYUSER-c“cd~/repo;git remote-v”
来源@:/path/to/repo(提取)
原点@:/path/to/repo(推送)
#su-$MYUSER-c“cd~/repo;git pull”
已经是最新的了。

试着用
pwd
替换
git pull
,看看它打印了什么。我得到了
/home/username
我添加了额外的git参数。谢谢
# su - $MYUSER -c "git clone <user>@<host>:/path/to/repo"
Cloning into 'repo'...
remote: Counting objects: 13, done.
<..>

# ls -l /home/$MYUSER/repo/.git/config
-rw-r--r-- 1 somebody somebody 275 Nov  8 23:55 /home/somebody/repo/.git/config

# su - $MYUSER -c "cd ~/repo; git remote -v"
origin <user>@<host>:/path/to/repo (fetch)
origin <user>@<host>:/path/to/repo (push)

# su - $MYUSER -c "cd ~/repo; git pull"
Already up-to-date.