`origin`有什么特别的意义吗?

时间:2015-09-06 12:12:50

标签: git

我使用此文档设置了一些github repos:

echo "# foo" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/foo-1/foo.git
git push -u origin master

名称origin是否有任何特殊含义?

如果是这样纯粹是语义上的?

1 个答案:

答案 0 :(得分:6)

现在只是克隆的上游回购的默认名称 但它原来也是一个分支(直到2007年初的git 1.5.0):

第一次提交“origin”的提交日期来自1cadb5a (July 2005, git 0.99.2) 接下来是commit a692b96,其中解释了:

  

没有“公共”存储库的“个人开发人员”的推荐工作周期有些不同。它是这样的:

     

(1)通过“git clone”“项目负责人”(或“子系统维护者”,如果您在子系统上工作)的公共存储库准备工作存储库。
  用于初始克隆的URL存储在.git/branches/origin

中      

(2)你的工作在那里。提交。

     

(3)每隔一段时间从上游的公共存储库运行“git fetch origin”。这只是“git pull”的前半部分,但没有合并   公共存储库的头部存储在.git/refs/heads/origin

该工作流显然非常适合Linux kernel的分布式开发,其中只有一个上游回购。

.git/branches/origin .git/remotes/origincommit 6687f8f (Aug. 2005, git v0.99.5)之前不会变为git clone,此时可以获取多个上游回购

  

现在多头提取已完成,让我们迁移使用“$GIT_DIR/branches”命令创建的新存储库的默认配置。

     

原来的.git/remotes/origin尚未弃用,但默认情况下也会从模板中创建远程目录。

然后commit e125c1a (Nov. 2005, v0.99.9c)添加:

  

默认情况下,新克隆的存储库已将master设置为跟踪远程originorigin,但忘记自行创建HEAD分支。
  它还硬编码了远程master指向“.git/refs/remotes/”的假设,这可能并非总是如此。

它开始演变为'origin'作为commit dfeff66 (March 2006, git 1.3.0)中的上游回购,其中:

  

将上游分支头复制到.git/refs/heads/而不是.git/remotes/origin,并设置.git/refs/remotes文件以反映这一点。
  它需要有一个fetch / pull更新来理解Eric Wong的origin,以便以这种方式进一步更新克隆的存储库。

详见commit c72112e

commit 5e27e27 (July 2006, git 1.4.2)中引入了提取时默认为'origin'。

远程./git/config存储在commit 255cae8 (Nov. 2006, git 1.5.0)

中的.git/remotes/origin
  

例如之前的 URL: proto://host/path Pull: refs/heads/master:refs/heads/origin

.git/config
  

现已添加到 [remote "origin"] url = proto://host/path fetch = refs/heads/master:refs/heads/origin

git pull

origin默认为.git/config commit 955289b (Dec. 2006, git 1.5.0)

git-pull文件中没有任何规范,git-pull origin将执行 “origin”;反过来默认从第一个“拉”拉 远程定义“origin”。

glossary is then updated

  

<强> origin

     

默认上游存储库。 大多数项目至少有一个他们跟踪的上游项目。默认情况下,“origin/name-of-upstream-branch”用于此目的   新的上游更新将被提取到名为git branch -r的远程跟踪分支中,您可以使用“ if keyboardNotification != nil { let userInfo = keyboardNotification!.userInfo let animationDuration: NSTimeInterval = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as NSNumber).doubleValue() let keyboardScreenBeginFrame = (userInfo[UIKeyboardFrameBeginUserInfoKey] as NSValue).CGRectValue() let keyboardScreenEndFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as NSValue).CGRectValue() } ”查看。