很多时候,Git和Ruby on Rails看起来就像是魔法⋯⋯比如在Ruby on Rails 3教程书的第一章中,它讲到了Git:
git remote add origin git@github.com:peter/first_app.git
git push origin master
它基本上是说“它只是起作用”,没有过多说明是什么,就开始谈论分支。在互联网上搜索可以发现,git remote add
用于添加“短名称”,例如origin
,它可以是任何名称,就像是URL的别名。
origin
通常指向远程存储库的路径(在http://git-scm.com/book/en/Git-Basics-Working-with-Remotes的“添加远程存储库”中)。
那么为什么URL不是git://git@github.com/peter/first_app.git
,而是其他语法--它是什么语法?为什么必须以.git
结尾?我尝试过不使用.git
,它也可以工作。如果不是.git
,它还可以是什么?git@github.com
中的git
似乎是Git服务器上的用户帐户?
此外,为什么使用git push origin master
如此冗长?默认不能是origin和master吗?我发现第一次需要origin master
,但进行小修改和提交后,git push
就足够了(不需要origin master
)。了解情况的人能否给出一些细节?
有时感觉很神奇而没有解释......有时使用它的人非常自信,当被问及原因时无法解释,并回答类似“这就是事实”的话。有时非常实用和务实。成为务实是不错的,但也许到了不知道正在发生什么的程度就不实用了。
git@github.com:peter/first_app.git
是Git中SSH URL的scp
样式语法。另外一点是,默认情况下,master
的上游配置不会影响到git push
的行为,除非你将push.default
设置为tracking
(或后来版本中的upstream
) - 我在我的博客文章中对这个引起困惑的问题进行了说明:http://longair.net/blog/2011/02/27/an-asymmetry-between-git-pull-and-git-push/。 - Mark Longairpush.default
,在使用git push
时将使用上游配置来查找默认远程,但不会影响引用的映射。 - Mark Longairorigin
通常用作你最初克隆的位置,但你完全可以给它取其他名字。这只是一个名称而已。 - Noufal Ibrahim