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