在Git中,origin/master与origin master之间有什么区别?

Sen*_*ran 234 git

我知道,origin是远程存储库的术语,master是那里的分支.

我故意在这里省略"背景",我希望答案不应该依赖于背景.所以在git命令行中,origin/masterorigin master之间有什么区别.是否有一种非模糊的方式来理解何时使用origin/master以及何时应该使用origin master

Die*_*Epp 330

这里实际上有三件事:origin master是两件事,origin/master一件事.共计三件事.

两个分支:

  • master 是一个本地分支
  • origin/master是一个远程分支(它是名为"origin" 的远程分支的本地副本,名为"master")

一个遥控器:

  • origin 是一个遥远的

示例:拉入两个步骤

由于origin/master是分支,您可以合并它.这里有两个步骤:

第一步,master从遥控器中取出origin.该master分支上origin会被获取并在本地副本将被命名为origin/master.

git fetch origin master
Run Code Online (Sandbox Code Playgroud)

然后你合并origin/master进去master.

git merge origin/master
Run Code Online (Sandbox Code Playgroud)

然后,您可以将新的更改推master回到origin:

git push origin master
Run Code Online (Sandbox Code Playgroud)

更多例子

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

git fetch origin master stable oldstable
Run Code Online (Sandbox Code Playgroud)

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

git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290
Run Code Online (Sandbox Code Playgroud)

  • 第一部分非常有用.我无法连接更多示例,尤其是合并示例.谢谢你的回答. (4认同)
  • 你只能提交到一个本地分支,所以当你签出一个远程分支时,你会得到“分离的头”。当然,它是远程分支的本地副本,但它仍然是远程分支。没有任何规则表明“master”与“origin/master”完全相关,它们可能完全不同。 (4认同)
  • @ Jwan622"起源是一个遥远的"......"起源"只是一个名字,你可以为遥控器选择任何名称,但"起源"是默认名称.远程是其他地方的存储库.它可能是GitHub,也可能是不同的计算机,甚至可能是同一台计算机上的其他地方. (3认同)
  • @ Jwan622:"git remote add"是一个创建新遥控器的命令."origin"是遥控器添加的名称.由于"origin"只是一个名称,如果您愿意,可以选择其他名称.例如,`git remote add home my-server:projects/my-project`添加一个名为"home"的远程.您可以参考文档:http://git-scm.com/docs/git-remote (2认同)

Fem*_*ref 14

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

origin mastermaster遥控器上的分支origin.

所以我们有这些,

  • origin/master(表示或指向远程分支的指针)
  • 大师 - (实际分支)
  • (实际分支)
  • (实际分支)
  • (实际分支)

示例(在本地分支中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
Run Code Online (Sandbox Code Playgroud)

  • 这是不正确的......`origin master`不是分支......它实际上是两个独立的东西,"origin"(远程)和"master"(本地分支). (21认同)
  • 是的,这是不正确的`origin/master`是远程主分支.本地分支只是主人. (4认同)

Rau*_*ene 5

origin/master是远程master分支

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

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

  • 这似乎实际上与 OP 所寻找的最接近 - `origin master` 告诉软件对“origin”存储库中的“master”上的任何内容执行某些操作。`origin/master` 是一个引用,方式相同` f3a4d5` 或 `HEAD` 是。 (3认同)

for*_*dya 5

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

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

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

就 origin/master (例如 bangalore/master)而言,它是指向bangalore站点上的“master”提交的指针。你可以在你的克隆体中看到它。

自从您完成“获取”或“拉取”操作后,远程班加罗尔可能已经进步


小智 5

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


max*_*pan 5

在讨论差异之前,我们需要了解Git 中origin的含义。

origin只是赋予远程存储库的原始名称。起源只是一个位置而已。在下面的示例中,存储库 URL 是 代码所在位置的来源或事实来源。

git 克隆https://github.com/mycode/git-awsomecode.git

现在,您存储库的这个起源或事实来源可以有分支,其中包括 master 或development 或您命名的分支。

现在,在上下文中我们可以很容易地理解以下内容的含义。

  1. origin master:我是驻留在远程存储库(称为(origin))上的主分支。

那么如果我输入git pull origin master会发生什么?

这将更新我的本地主分支(在我的本地计算机上)将远程主分支(即原始主分支)上可用的所有更改。

现在我希望我的更改与本地主分支合并,如何实现这一目标?

git 合并 origin/master

这将用我的更改更新我的本地主分支。拥有 origin/master 的原因只是命名约定,您可以将本地 master 分支命名为 origin/master 或 abcd。因此,您可以将本地分支命名为 master,而不是 origin/master,而 git 的命令将是git merge master

如何使用所有本地更改更新我的远程主分支?

git推送原点大师

该命令表示将我对原点的所有本地更改(即存储库(https://github.com/mycode/git-awsomecode.git))发送到主分支中。

  • `git pull origin master` 不会更新您所在的任何本地分支(可能不是“本地主分支”)吗? (2认同)