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

我故意在这里省略了“上下文”,我希望答案不应该取决于上下文。那么在git命令行中,origin/master和origin master之间有什么区别呢?有没有一种明确的方法来理解什么时候使用原点/主节点,什么时候应该使用原点主节点?


当前回答

我建议将develop和master与该命令合并

git checkout master

git merge --commit --no-ff --no-edit develop

更多信息,请访问https://git-scm.com/docs/git-merge

其他回答

(注意:当这个问题最初发布时,“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 /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

我建议将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))到主分支。

由于您可以在拔掉网线的情况下切换到原点/主分支(尽管处于分离状态),因此它必须是原点主分支的本地表示。