我认为我在正确的轨道上理解git的基本概念。
我已经建立并克隆了一个远程存储库。我还创建了一个服务器端空存储库,并将我的本地存储库链接到它。
我的问题是我不明白以下两者的区别:
Origin /master vs. remotes/ Origin /master
据我所知,master是一个本地分支,remotes/origin/master是一个远端分支。
但到底什么是起源/主宰?
我认为我在正确的轨道上理解git的基本概念。
我已经建立并克隆了一个远程存储库。我还创建了一个服务器端空存储库,并将我的本地存储库链接到它。
我的问题是我不明白以下两者的区别:
Origin /master vs. remotes/ Origin /master
据我所知,master是一个本地分支,remotes/origin/master是一个远端分支。
但到底什么是起源/主宰?
当前回答
我想让@ErichBSchulz的回答对初学者来说更简单:
Origin /master是远程存储库上主分支的状态 Master是本地存储库上的主分支的状态
其他回答
给我这样的傻瓜的简短回答(从Torek那里偷来的):
origin/master是“上次我检查master在哪里” master指的是"根据我一直在做的事情,master在哪里"
澄清一下(也是让我困惑的一点):
“remotes/origin/HEAD是默认的分支”是不正确的。
Remotes /origin/master是远程存储库中的默认分支(上次检查时)。HEAD不是一个分支,它只是指向一个分支。
把HEAD看作你的工作区域。当你这样想的时候,'git checkout branchname'对于将你的工作区域文件更改为特定分支的文件是有意义的。您将分支文件“签出”到您的工作区域。对于所有实际目的来说,HEAD是你在工作区域可以看到的东西。
我想让@ErichBSchulz的回答对初学者来说更简单:
Origin /master是远程存储库上主分支的状态 Master是本地存储库上的主分支的状态
origin -这是指向远程的自定义和最常见的名称。
$ git remote add origin https://github.com/git/git.git—你将运行这个命令来链接你的github项目到origin。这里origin是用户自定义的。 你可以用$ git remote rename old-name new-name来重命名它
master - Git中默认的分支名称是master。适用于远程和本地计算机。
origin/master -这只是一个在远程repo中引用主分支的指针。记住我说过原点指向远程。
$ git fetch origin -从远程存储库下载对象并引用到本地计算机[origin/master]。这意味着它不会影响您的本地主分支,除非您使用$ git merge origin/master合并它们。在运行此命令之前,请记住签出需要合并的正确分支
注意:获取的内容表示为远程分支。Fetch让您有机会在将更改集成到项目副本之前检查更改。显示你的和远程$git差异master..origin/master之间的变化
复制一个远程存储库并运行git branch -a(显示git所知道的所有分支)。它可能看起来像这样:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
在这里,master是本地存储库中的一个分支。Remotes /origin/master是远程命名origin上名为master的分支。你可以将其称为origin/master,如下所示:
git diff origin/master..master
你也可以把它称为remotes/origin/master:
git diff remotes/origin/master..master
这只是引用同一事物的两种不同方式(顺便说一句,这两个命令都表示“向我显示远程主分支和我的主分支之间的更改”)。
remotes/origin/HEAD是远程命名origin的默认分支。这让您可以简单地说origin而不是origin/master。