2017-05-26 71 views
1

如何才能使一个git的承诺,他们没有写入权限的文件夹呢?我最初的尝试是:让git的承诺使用sudo

[email protected]:/etc $ sudo git init 
[email protected]:/etc $ sudo git commit -m'init' 

不幸的是,这是行不通的。常规用户有一个.gitconfig与所需的名称和电子邮件,我需要在提交git使用这些凭据。 root用户没有这样的git凭证,因此无法进行提交。

+0

你确定吗?如果我做'sudo git config -l --show-origin',它仍然会显示我的用户配置值,而不是root用户。 – Vampire

+0

@吸血鬼它不这样做对我来说。需要注意的是'--show-origin'导致错误,但'须藤混帐配置-l'显示根证书(我已经得到ΔλЛ的答案之前最近增加) – user1032531

+0

你,那么也许应该更新的Git版本。 '--show-origin'从版本2.8.0开始存在。这意味着您的版本已超过1.5年。 – Vampire

回答

3

Git有-c选项,它可以让你覆盖.gitconfig设定值(或提供任何新的键值对):

-c <name>=<value> 
     Pass a configuration parameter to the command. The value given will override 
     values from configuration files. The <name> is expected in the same format as 
     listed by git config (subkeys separated by dots). 

所以,你可以例如执行:

git -c user.name=user1032531 init 

你可以还可以将用户的.gitconfig作为根用户的gitconfig链接,或者授予当前用户对需要在回购站中的所有文件的访问权限(考虑使用最后一个选项)。

+0

所以,像'须藤混帐-c user.name = user1032531 -c [email protected] init','须藤GIT中-c user.name = user1032531 -c [email protected]加.','须藤GIT中-c user.name = user1032531 -c [email protected]提交-m'init “'?谢谢 – user1032531

+0

是的,你可以创建一个别名:'alias git ='git -c user.name = user1032531 -c user.email = user @ stack.com''。 – syntagma

+0

啊,别名更好! – user1032531

2

这里有3个选择,要么你给自己的文件夹权限(即让任何人都可以使用),你可以改变你试图提交的目录到你有烫发的地方,或者你可以使用sudo编辑sudo编辑文件的编辑git的配置文件。

+0

如何将目录更改为提交的目录? – user1032531

+0

不是它提交的地方,更改您要提交的文件所在的目录,除非我误解了您的问题。如果我这样做,对不起 – MrSanchez

+0

此外,对方的回答比我的好,关注@ΔλЛ回答 – MrSanchez