我使用此文档设置了一些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
是否有任何特殊含义?
如果是这样纯粹是语义上的?
答案 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/origin
在commit 6687f8f (Aug. 2005, git v0.99.5)之前不会变为git clone
,此时可以获取多个上游回购。
现在多头提取已完成,让我们迁移使用“
$GIT_DIR/branches
”命令创建的新存储库的默认配置。原来的
.git/remotes/origin
尚未弃用,但默认情况下也会从模板中创建远程目录。
然后commit e125c1a (Nov. 2005, v0.99.9c)添加:
默认情况下,新克隆的存储库已将
master
设置为跟踪远程origin
到origin
,但忘记自行创建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 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
”。
<强>
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() }
”查看。