git clone得到错误的depot:命令行不会覆盖全局配置中的设置

时间:2013-11-26 19:37:46

标签: git amazon-ec2 git-config

我有一个生活在EC2保留实例上的两个回购。

我已经成功地将它们克隆到各种客户端平台(Windows,Mac,Ubuntu),但是当我尝试将它们克隆到EC2上的Windows实例时,即使我要求它,我仍然只得到一个回购另一个。

git clone ubuntu@gitServer:/git_repos/repoOne.git   // gives me repoOne
git clone ubuntu@gitServer:/git_repos/repoTwo.git   // also gives me repoOne!

在尝试了很多常见的嫌疑人(别名,不同版本的git,验证我可以直接使用ssh访问回购)之后,我偶然发现了答案。

不知何故,我的git全局配置获得了指向repoOne的“remote.origin.url”条目。一切都很好,但我很惊讶在命令行上指定URL没有覆盖配置设置。

在Pro Git(第11页)中,它表示“每个级别都会覆盖上一级别的值”。虽然没有明确说明,但我认为命令行上的选项会覆盖所有内容?

我想我的实际问题是:配置解析的规则是什么?

1 个答案:

答案 0 :(得分:0)

Heres从git-scm书中剪了一下:

您在第一章中看到了一些简单的Git配置细节,但我会在这里再次快速浏览它们。 Git使用一系列配置文件来确定您可能需要的非默认行为。 Git查找这些值的第一个位置是/ etc / gitconfig文件,该文件包含系统中每个用户及其所有存储库的值。如果将选项--system传递给git config,它会专门从该文件中读取和写入。

Git看起来的下一个地方是〜/ .gitconfig文件,该文件特定于每个用户。您可以通过传递--global选项使Git读取和写入此文件。

最后,Git在您当前使用的任何存储库的Git目录(.git / config)中的配置文件中查找配置值。这些值特定于该单个存储库。每个级别都会覆盖前一级别的值,因此.git / config中的值会胜过/ etc / gitconfig中的值。您也可以通过手动编辑文件并插入正确的语法来设置这些值,但通常更容易运行git config命令。

更多信息可在以下网址找到:http://git-scm.com/book/en/Customizing-Git-Git-Configuration

我不确定命令行上的url是否打算专门覆盖你在配置文件中提到的值,这可能就是你没有看到它被覆盖的原因。在命令行上git说你正在传递它...我想是的,那个url确实变成了remote.origin.url,最终......但是在克隆过程的早期它不会完全配置新的遥控器(基本上),所以主持配置变量覆盖了预期的URL。

这至少是我的理解和思考过程。