git 命令中的 'origin' 和 'remote' 有什么区别?
What is the difference between 'origin' and 'remote' in git commands?
在git行话中,origin
和remote
是一回事吗?还是 origin
指的是本地目录?
在git push -u origin master
的情况下:以下哪个解释是正确的?
- "push everything upstream to the remote repo called 'origin' and its branch 'master'"
- "push everything from the local originating repo called 'origin' to the upstream 'master' branch"
感谢任何澄清!
我的问题的答案为我澄清了两个问题:
origin
指的是远程仓库,而不是远程仓库的本地克隆副本。当有人读到 origin
是 remote
的别名并且是在 git clone
时创建时,这一点并不清楚
origin
指的是 git push -u origin master
中的远程仓库,因为隐含了仓库的本地副本并且 "rarely referenced".
您可以有多个遥控器,每个遥控器都有不同的名称 - 例如默认 "origin"
您的问题假设您当前已签出 master 分支。
git push -u origin master
将名为master的本地分支作为名为master的分支推送到"origin"远程。 -u 标志告诉本地 git 将该远程分支跟踪为本地分支的上游。
不,remote
是 origin
的父结构。这只是克隆存储库时 remote
Git 创建的默认名称。
关于这个问题的更多信息:What is “origin” in Git?
不,它们的意思不同。
remote
,在 git
中,指的是任何远程存储库,例如您的 GitHub 或另一个 git
服务器。
按照惯例,origin
是 git
中的默认远程名称。当您执行 git clone <url>
时,<url>
会自动添加到名称为 origin
的本地存储库中。当然,您可以使用 git remote add
.
添加不同名称的其他遥控器
当您执行 git push -u origin master
时,它的意思是 "push everything from my local master to the remote named origin
"。这个命令的结构当然更通用——更通用的形式是 git push -u <remote> <branch>
,它将把名为 branch
的分支推送到指定的远程,如果远程没有,则在远端创建它还没有(这就是 -u
标志的作用)。
进一步补充,git push
,默认会将当前分支推送到origin
,对应git push origin <current-branch>
.
A remote 只是一个词:一个名称,用于标识某个地方的其他 Git 存储库。
字符串 origin
是 git clone
自动放入的(单数)遥控器的默认名称,当您从其他("origin"-al)克隆时 Git 存储库。您可以选择其他名称,and/or 添加更多遥控器。每个遥控器至少有一个 URL,这是另一个存储库所在的位置。
对于git push
,第三个字——如果你添加了各种标志,请根据需要调整这个数字;在本例中,您添加了 -u
,所以现在它是第四个词——通常是某个遥控器的名称。
剩下的话都是refspecs,可以总结一下(虽然不是100%准确...其实不到50%准确,看你怎么算了: -) ) 作为一对用冒号分隔的分支名称.
如果你只写一个分支名称,如 master
,Git 将其视为 "use (part of) the upstream if one is set, otherwise use the same name after the colon." 通常上游,如果设置,具有相同的基本名称,所以 master
通常结束意味着 master:master
。 Git 发送他们——远程 URL 的 Git——在 你的 分支(左边的名字)上找到的提交,然后询问他们将 他们的 分支(右侧的名称)设置为您刚刚为该分支推送的同一提示提交。
如果您不输入任何参考规格,Git 的默认值取决于您的 Git 版本。从 Git 版本 2.0 开始,默认是将您的 当前分支 推送到远程上同名的分支。
-u
标志告诉git push
,如果推送成功,它应该设置你刚刚推送的分支的上游。
分支的 upstream 分为两部分:远程名称和该远程分支的名称。由于您给了 git push
两个项目——遥控器的名称是 origin
,而分支是隐含的 master:master
中的第二个(post-冒号)master
] 来自 master
——如果成功,这将把 master
的上游设置为 origin/master
。
(Edit:您可能很自然地想知道 /
在 upstream 设置中的来源 origin/master
。这在一定程度上是历史产物。不幸的是,它会导致大量混乱。现在,请记住 remote、branch, 和 remote-tracking branch 在 Git 中都是不同的东西。它们以各种方式相关,但重要的是要记住它们并不相同,并且术语具有非常具体的含义。track这个词也被重载了。新术语upstream更好,但并非所有描述都使用它。)
在git 术语中,origin
只是最初克隆回购协议的远程的默认名称。它可能同样被称为 source
或 remote1
或只是 remote
.
请记住,git
是一个点对点的分布式系统,不具有任何内置的 client/server、master/slave、parent/child 关系概念(尽管这些可能是用户在特定情况下强加给它的)。
所有遥控器都是平等的。 origin
只是(从字面上看)那些平等中的第一个(对于克隆的回购)。 :)
正如 Jan 在评论中指出的那样,与每个遥控器关联的名称是为了方便您使用。如果您发现 origin
不适合您,那么您可以更改它。
至于你对 push
语句的解释,你的第一个是最接近正确的,但是写入的 push 命令会将本地 master
分支推送到 master
分支在由(本地配置的)名称 origin
.
标识的远程上
如果远程中没有 master
分支,则会创建一个。
Full details of the push command and the flags, options etc are of course in the docs.
您很少(如果有的话)明确引用 'local' 存储库,因为您的操作是在存储库的上下文中执行的。
在git行话中,origin
和remote
是一回事吗?还是 origin
指的是本地目录?
在git push -u origin master
的情况下:以下哪个解释是正确的?
- "push everything upstream to the remote repo called 'origin' and its branch 'master'"
- "push everything from the local originating repo called 'origin' to the upstream 'master' branch"
感谢任何澄清!
我的问题的答案为我澄清了两个问题:
origin
指的是远程仓库,而不是远程仓库的本地克隆副本。当有人读到origin
是remote
的别名并且是在git clone
时创建时,这一点并不清楚
origin
指的是git push -u origin master
中的远程仓库,因为隐含了仓库的本地副本并且 "rarely referenced".
您可以有多个遥控器,每个遥控器都有不同的名称 - 例如默认 "origin"
您的问题假设您当前已签出 master 分支。
git push -u origin master
将名为master的本地分支作为名为master的分支推送到"origin"远程。 -u 标志告诉本地 git 将该远程分支跟踪为本地分支的上游。
不,remote
是 origin
的父结构。这只是克隆存储库时 remote
Git 创建的默认名称。
关于这个问题的更多信息:What is “origin” in Git?
不,它们的意思不同。
remote
,在 git
中,指的是任何远程存储库,例如您的 GitHub 或另一个 git
服务器。
origin
是 git
中的默认远程名称。当您执行 git clone <url>
时,<url>
会自动添加到名称为 origin
的本地存储库中。当然,您可以使用 git remote add
.
当您执行 git push -u origin master
时,它的意思是 "push everything from my local master to the remote named origin
"。这个命令的结构当然更通用——更通用的形式是 git push -u <remote> <branch>
,它将把名为 branch
的分支推送到指定的远程,如果远程没有,则在远端创建它还没有(这就是 -u
标志的作用)。
进一步补充,git push
,默认会将当前分支推送到origin
,对应git push origin <current-branch>
.
A remote 只是一个词:一个名称,用于标识某个地方的其他 Git 存储库。
字符串 origin
是 git clone
自动放入的(单数)遥控器的默认名称,当您从其他("origin"-al)克隆时 Git 存储库。您可以选择其他名称,and/or 添加更多遥控器。每个遥控器至少有一个 URL,这是另一个存储库所在的位置。
对于git push
,第三个字——如果你添加了各种标志,请根据需要调整这个数字;在本例中,您添加了 -u
,所以现在它是第四个词——通常是某个遥控器的名称。
剩下的话都是refspecs,可以总结一下(虽然不是100%准确...其实不到50%准确,看你怎么算了: -) ) 作为一对用冒号分隔的分支名称.
如果你只写一个分支名称,如 master
,Git 将其视为 "use (part of) the upstream if one is set, otherwise use the same name after the colon." 通常上游,如果设置,具有相同的基本名称,所以 master
通常结束意味着 master:master
。 Git 发送他们——远程 URL 的 Git——在 你的 分支(左边的名字)上找到的提交,然后询问他们将 他们的 分支(右侧的名称)设置为您刚刚为该分支推送的同一提示提交。
如果您不输入任何参考规格,Git 的默认值取决于您的 Git 版本。从 Git 版本 2.0 开始,默认是将您的 当前分支 推送到远程上同名的分支。
-u
标志告诉git push
,如果推送成功,它应该设置你刚刚推送的分支的上游。
分支的 upstream 分为两部分:远程名称和该远程分支的名称。由于您给了 git push
两个项目——遥控器的名称是 origin
,而分支是隐含的 master:master
中的第二个(post-冒号)master
] 来自 master
——如果成功,这将把 master
的上游设置为 origin/master
。
(Edit:您可能很自然地想知道 /
在 upstream 设置中的来源 origin/master
。这在一定程度上是历史产物。不幸的是,它会导致大量混乱。现在,请记住 remote、branch, 和 remote-tracking branch 在 Git 中都是不同的东西。它们以各种方式相关,但重要的是要记住它们并不相同,并且术语具有非常具体的含义。track这个词也被重载了。新术语upstream更好,但并非所有描述都使用它。)
在git 术语中,origin
只是最初克隆回购协议的远程的默认名称。它可能同样被称为 source
或 remote1
或只是 remote
.
请记住,git
是一个点对点的分布式系统,不具有任何内置的 client/server、master/slave、parent/child 关系概念(尽管这些可能是用户在特定情况下强加给它的)。
所有遥控器都是平等的。 origin
只是(从字面上看)那些平等中的第一个(对于克隆的回购)。 :)
正如 Jan 在评论中指出的那样,与每个遥控器关联的名称是为了方便您使用。如果您发现 origin
不适合您,那么您可以更改它。
至于你对 push
语句的解释,你的第一个是最接近正确的,但是写入的 push 命令会将本地 master
分支推送到 master
分支在由(本地配置的)名称 origin
.
如果远程中没有 master
分支,则会创建一个。
Full details of the push command and the flags, options etc are of course in the docs.
您很少(如果有的话)明确引用 'local' 存储库,因为您的操作是在存储库的上下文中执行的。