`origin`有特殊含义吗?

5

我使用这份文档设置了几个GitHub代码库:

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个回答

6
现在它只是克隆上游仓库的默认名称。
但最初它也是一个分支(直到 2007 年早期的 git 1.5.0 版本):
第一个引入“origin”的提交可以追溯到 1cadb5a(2005 年 7 月,git 0.99.2)
接着是提交 a692b96,其中解释道:
一个“个人开发者”如果没有“公共”代码库,建议的工作流程略有不同。具体如下: (1) 通过“git clone”项目负责人(或子系统维护者,如果你在子系统上工作)的“公共”代码库准备你的工作代码库。 初始克隆使用的URL存储在“.git/branches/origin”中。 (2) 在此处完成你的工作。制作提交。 (3) 不时地从上游的公共代码库运行“git fetch origin”。这只做了“git pull”的前半部分,但不会合并。 公共代码库的头存储在“.git/refs/heads/origin”中。 该工作流程显然非常适合Linux内核的分布式开发,其中你只有一个上游repo。

提交 6687f8f(2005年8月,git v0.99.5)之前,.git/branches/origin不会变成.git/remotes/origin,当您可以获取多个上游仓库时。

现在多头抓取已完成,让我们迁移使用"git clone"命令创建的新仓库的默认配置。

原始的$GIT_DIR/branches尚未过时,但默认情况下也从模板创建远程目录。


然后 提交 e125c1a (2005年11月,v0.99.9c) 添加:

默认情况下,新克隆的存储库设置了 .git/remotes/origin 来跟踪远程 masterorigin,但是忘记了自己创建 origin 分支。
此外,它硬编码了假设远程 HEAD 指向 "master",这可能并不总是正确的。


它开始在提交dfeff66(2006年3月,git 1.3.0)中作为上游存储库演变为“origin”,其中:

上游分支头被复制到.git / refs / remotes /而不是 .git / refs / heads / ,并且设置 .git / remotes / origin 文件以反映此事实。
需要使用Eric Wong的fetch / pull更新来了解 .git / refs / remotes ,以便进一步更新以这种方式克隆的存储库。

这在提交c72112e中详细说明。


提交记录5e27e27(2006年7月,git 1.4.2)引入获取时,默认为“origin”。


origin远程仓库的信息存储在提交记录255cae8 (2006年11月,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 默认使用 提交955289b(2006年12月,git 1.5.0)origin

如果在 .git/config 文件中没有任何规定,git-pull 将执行 "git-pull origin";这将默认从远程仓库的第一个“pull”定义 "origin" 进行拉取。

然后 更新词汇表

origin

默认的上游仓库。 大多数项目至少有一个上游项目进行跟踪。默认情况下,使用“origin”进行此操作
新的上游更新将被获取到命名为origin/name-of-upstream-branch的远程跟踪分支中,您可以使用“git branch -r”查看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接