我知道,origin是远程存储库的术语,master是那里的分支。
我故意在这里省略了“上下文”,我希望答案不应该取决于上下文。那么在git命令行中,origin/master和origin master之间有什么区别呢?有没有一种明确的方法来理解什么时候使用原点/主节点,什么时候应该使用原点主节点?
我知道,origin是远程存储库的术语,master是那里的分支。
我故意在这里省略了“上下文”,我希望答案不应该取决于上下文。那么在git命令行中,origin/master和origin master之间有什么区别呢?有没有一种明确的方法来理解什么时候使用原点/主节点,什么时候应该使用原点主节点?
Origin /master是一个实体(因为它不是物理分支),表示远程原点上主分支的状态。
原点主节点是远端原点上的分支主节点。
所以我们有这些:
origin/master(指向远程分支的表示或指针) 主-(实际分支) >(实际分支) <Your_local_branch2>(实际分支) >(实际分支)
示例(在本地分支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
Origin /master是远程主分支
通常在git获取origin从服务器获取所有更改后,你会做一个git rebase origin/master,重基你的更改,并将分支移动到最新的索引。这里,origin/master指的是远程分支,因为您基本上是在告诉GIT将origin/master分支重新基于当前分支。
例如,在push时可以使用origin master。git push origin master只是告诉git将本地主分支推送到远程存储库。
(注意:当这个问题最初发布时,“master”是Git中分支的默认名称。因为“main”现在是默认名称,这个答案已经更新为“main”,希望这对Git新手来说更自然。)
这里实际上有三个东西:origin main是两个独立的东西,origin/main是一个东西。总共有三件事。
两个分支:
Main是本地分支 Origin /main是一个远程跟踪分支(它是名为“Origin”的远程分支上名为“main”的本地副本)
一个远程:
起源是遥远的
源端/主端是否远程?
源头/主干是本地的!任何时候你从origin取回,origin/main都会被更新。然而,origin/main可能会过时,甚至有可能main在origin上已经不存在了。你可以使用——prune选项(-p)和git fetch来自动删除远程跟踪分支,如果他们跟踪的分支被删除了。
原点/主分支不是对原点上的主分支的引用或指针。这是本地副本。
例子:拉进两步
因为origin/main是一个分支,所以可以合并它。这里有两步拉:
第一步,从远程源中获取main。将获取origin上的主分支,并将本地副本命名为origin/main。
git fetch origin main
然后将origin/main合并到main中。
git merge origin/main
然后你可以将你在main中的新更改推回原点:
git push origin main
更多的例子
你可以通过名称获取多个分支…
git fetch origin main stable oldstable
你可以合并多个分支…
git merge origin/main hotfix-2275 hotfix-2276 hotfix-2290
你能用别的名字吗?
如果我不愿意,我的本地分支不必被命名为main。它不必与远程分支具有相同的名称!假设我想把我的分支命名为alice,但仍然让它跟踪origin/main:
我可以很容易地做到:
git checkout -b alice --track origin/main
您可以看到本地分支名为alice,但远程分支名为main,本地副本名为origin/main。这完全没问题!这可能有点令人困惑,但也许您已经有一个名为main的不同分支,并且您需要切换到不同的分支来处理不同的更改。
Origin是远程git url的名称。 下面还有很多遥控器的例子。
bangalore => bangalore.example.com:project.git boston => boston.example.com:project.git
就origin/master(例如bangalore/master)而言,它是指向“master”在bangalore站点上提交的指针。 你可以在你的克隆体身上看到。
可能因为你做了“取回”或“拉取”,远程班加罗尔已经进步了。
我建议将develop和master与该命令合并
git checkout master
git merge --commit --no-ff --no-edit develop
更多信息,请访问https://git-scm.com/docs/git-merge
在讨论区别之前,我们需要了解Git中原点的含义。
Origin只是远程存储库的原始名称。原点只是一个位置而已。在下面的例子中,存储库URL是代码所在位置的来源。
git 克隆 https://github.com/mycode/git-awsomecode.git
现在,这个来源或真相的来源可以有分支,包括master或development或你命名的。
现在把原点放在上下文中,我们可以很容易地理解下面这些东西的意思。
origin master:我是驻留在名为(origin)的远程存储库上的主分支。
如果我输入git pull origin master会发生什么?
这将更新我的本地主分支(在我的本地机器上)将远程主分支(即起源主)上的所有更改可用。
现在我想我的变化合并到我的本地主分支我怎么能做到这一点?
git 合并源/主
这将更新我的本地主分支与我的变化。使用origin/master的原因只是命名约定,你可以将本地主分支命名为origin/master或abcd。所以你可以把本地分支命名为master而不是origin/master git的命令是git merge master。
如何用所有本地更改更新远程主分支?
Git push origin master
该命令表示将所有本地更改发送到原点(即存储库(https://github.com/mycode/git-awsomecode.git))到主分支。