在Git中,原点/母版与原点母版有什么区别?


290

我知道,起源是远程存储库的术语,而master是那里的分支。

我故意在这里省略了“上下文”,我希望答案不应该取决于上下文。因此,在git命令行中,origin / masterorigin master之间有什么区别。是否有明确的方法来了解何时使用Origin / Master和何时应使用Origin Master


Answers:


390

实际上这里有三件事:origin master是两件分开的事,origin/master是一件事。总共三件事。

两个分支:

  • master 是当地分公司
  • origin/master是一个远程分支(它是名为“ origin”的远程分支上名为“ master”的分支的本地副本

一个遥控器:

  • origin 是一个遥控器

示例:分两步拉

由于origin/master是分支,因此可以合并它。这有两个步骤:

第一步,master从远程获取origin。该master分支上origin会被获取并在本地副本将被命名为origin/master

git fetch origin master

然后,您合并origin/mastermaster

git merge origin/master

然后,您可以将新更改推master回至origin

git push origin master

更多例子

您可以按名称获取多个分支...

git fetch origin master stable oldstable

您可以合并多个分支...

git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290

5
第一部分非常有用。我无法连接更多示例,尤其是合并示例如何适用。感谢您的回答。
Senthil Kumaran

1
...因为当我“ git checkout origin / master”时,我进入了分离状态。如果确实有远程master分支的本地副本,为什么我不能继续工作并提交并添加到该分支?也许我可以,但是为什么要分开?
stu

3
您只能提交到本地分支,因此当您签出远程分支时,您将获得“分离头”。当然,它是远程分支的本地副本,但仍然是远程分支。完全没有规则将“ master”与“ origin / master”相关联,它们可以完全不同。
Dietrich Epp 2014年

7
@ Jwan622“来源是远程” ...“来源”只是一个名称,您可以为远程选择任何名称,但“来源”是默认名称。远程是其他地方的存储库。它可能是GitHub,也可能是另一台计算机,甚至可能在同一台计算机上的其他地方。
Dietrich Epp 2014年

2
@ Jwan622:“ git remote add”是创建新远程的命令。“来源”是遥控器添加的名称。由于“起源”只是一个名称,因此您可以根据需要选择其他名称。例如,git remote add home my-server:projects/my-project添加一个名为“ home”的遥控器。您可能希望参考文档:git-scm.com/docs/git-remote
Dietrich Epp

16

origin/master是一个表示master远程分支的状态的实体(因为它不是物理分支)origin

origin mastermaster遥控器上的分支origin

所以我们有这些:

  • 源/主(远程分支的表示或指针)
  • 主-(实际分支
  • <Your_local_branch>(实际分支
  • <Your_local_branch2>(实际分支
  • <Your_local_branch3>(实际分支

示例(在本地分支中master):

git fetch # get current state of remote repository
git merge origin/master # merge state of remote master branch into local branch
git push origin master # push local branch master to remote branch master

24
这是不正确的…… origin master不是分支……实际上是两个独立的部分,“源”(远程)和“主”(本地分支)。
Dietrich Epp 2013年

远程主分支的状态在本地显示,对吗?
Senthil Kumaran

4
是的,这是不正确的origin/master是远程主分支。本地分支只是主人。
Aniket Thakur

5

origin/master是远程master分支

通常,在执行git fetch origin以便从服务器获取所有更改之后,您将执行git rebase origin/master来重新设置更改的基础并将分支移至最新索引。在这里,origin/master是指远程分支,因为您基本上是在告诉GIT将origin/master分支重新建立到当前分支上。

origin master例如,您将在推动时使用。git push origin master只是告诉GIT将本地master分支推送到远程存储库。


1
这似乎实际上与OP所寻找的最接近- origin master告诉软件对“原始”存储库中“主”上的内容进行某种处理。origin/master是相同的引用f3a4d5还是HEAD
Nemesarial

4

origin是远程git url的名称。下面可以有更多的遥控器示例。

班加罗尔=> bangalore.example.com:project.git

波士顿=> boston.example.com:project.git

就起源/母版(例如班加罗尔/母版)而言,它是指向班加罗尔站点上的“母版”提交的指针。您会在克隆中看到它。

自从您完成“获取”或“拉动”操作以来,远程班加罗尔可能已经发展起来


2

鉴于您可以origin/master在拔下网络电缆的同时切换到(尽管处于分离状态),它必须是master分支的本地表示origin


在上面和下面的答案中,人们说Origin / master是远程master分支。您的回答有点与他们的说法相矛盾。请说明一下。
露娜·洛夫古德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.