我想让任何用户克隆存储库而不必在clone命令中指定用户名 。
例如,说我的git用户名是john.doe (例如客户的要求),但是我在个人电脑上login的本地帐户是j.doe (例如公司要求),git会尝试使用j.doe来克隆版本库。
这是相当微妙但显着的不同,所以我用下面的两个例子来说明:
如果我做到以下几点:
j.doe~ $ git clone https://mygit.repo.url/somerepository.git
… git假设没有要求远程用户名是本地帐户(即j.doe )的用户名相同,并尝试克隆如下:
Cloning into somerepository [email protected]'s password:
但在这种情况下, j.doe不是远程存储库上的帐户。
通常的解决方法是按如下所示指定远程用户名:
j.doe~ $ git clone https://[email protected]/somerepository.git
这成功,但要求每个用户使用不同的克隆命令。
有几种情况下匿名语法更合适,例如:
我知道这个function是可能的,因为github使用它。 例如,如果您使用匿名语法在github上克隆存储库,您将看到如下内容:
j.doe~ $ git clone https://github.com/dbostock/d3.git Cloning into 'd3'... Username for 'https://github.com':
很不错! 使用任何shell,任何操作系统,任何脚本语言,我可以识别,validation和克隆我的存储库。
所以最后,我的问题归结为: github如何做到这一点?
Root可以像使用其他用户一样使用sudo 。 要么是这样,要么只是在克隆操作之后改变文件的所有权。
有没有办法,无论是从客户端或服务器,configuration一个Git仓库,以便它总是要求用户名?
Git将使用〜/ .git / config中指定的用户名或者在你的仓库URL中指定的用户名。 请记住,这是远程系统用户名,而不是本地用户名,所以它不会影响所有权。
这里的解决scheme是使用sudo进行git克隆操作。
从我看到的答案似乎是用来克隆存储库的协议。 根据这个git书 ,在标题为SSH协议的一节中它说:
你也可以不指定一个用户,Git假定你当前login的用户为。
替代协议包括: