Linux 根用户作为另一个用户拉入git的脚本
我有一个脚本,我想在另一个用户的git目录中进行git拉取。此脚本由root用户运行。例如: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选项。该选项被记录为第一次更改目
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.