我知道,origin是指远程仓库,而master则是该仓库的分支。
在Git命令行中,origin/master和origin master有什么区别?是否有一种明确的方法来理解何时使用origin/master和何时使用origin master?
我知道,origin是指远程仓库,而master则是该仓库的分支。
在Git命令行中,origin/master和origin master有什么区别?是否有一种明确的方法来理解何时使用origin/master和何时使用origin master?
(注意: 当此问题最初发布时,Git中分支的默认名称为“master”。由于现在的默认名称为“main”,因此已更新此答案以使用“main”,希望这对新接触Git的人更加自然。)
实际上有三个东西: origin main
是两个单独的东西,origin/main
是一个东西,总共三个东西。
两个分支:
main
是一个本地分支origin/main
是一个远程跟踪分支(它是命名为“origin”的远程上命名为“main”的分支的本地副本)一个远程:
origin
是一个远程origin/main
是远程吗?origin/main
分支是本地的!每次从origin
获取时,origin/main
都会更新。但是,origin/main
可能过时,甚至可能main
不再存在于origin
上。您可以使用--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
:
我可以很容易地这样做:
git checkout -b alice --track origin/main
你可以看到本地分支名为alice
,但远程分支名为main
,本地副本名称为origin/main
。这完全没问题!可能会有点困惑,但也许你已经有一个不同的分支名为main
,需要切换到另一个分支来处理不同的更改。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
不是一个分支,它实际上是两个独立的部分,"origin"(一个远程库)和 "master"(一个本地分支)。 - Dietrich Epporigin/master
是远程主分支。本地分支只是主分支。 - Aniket Thakurorigin/master
也是一个_本地_分支,尽管它是远程跟踪分支。 - starrietorigin/master
是远程的 master
分支
通常在执行 git fetch origin
获取服务器上的所有更改后,您会执行 git rebase origin/master
,以将您的更改重新应用并将分支移动到最新的索引。这里的 origin/master
是指远程分支,因为您实际上是在告诉 GIT 将 origin/master
分支重新应用到当前分支上。
例如,在推送时,您会使用 origin master
。简单来说,git push origin master
是告诉 GIT 推送本地的 master
分支到远程仓库。
origin master
告诉软件对 'origin' 仓库中 'master' 分支上的内容做某些操作。origin/master
是一种引用方式,就像 f3a4d5
或 HEAD
一样。 - Nemesarialorigin是远程git URL的名称。下面是更多示例。
bangalore => bangalore.example.com:project.git
boston => boston.example.com:project.git
就origin/master(例如bangalore/master)而言,它指向 bangalore 站点上 "master" commit 的指针。 你可以在克隆中看到它。
很有可能自从你进行了“fetch”或“pull”以来,remote bangalore已经更新了。
git merge origin/master
这将使用origin/master更新我的本地主分支与我的更改。命名为origin/master只是一种惯例,您可以将本地主分支命名为origin/master或abcd。因此,您可以将本地分支命名为master而不是origin/master,并且git的命令将是git merge master。git push origin master
该命令表示将所有本地更改发送到origin(即存储库(https://github.com/mycode/git-awsomecode.git))到主分支。git pull origin master
不是更新任何本地分支吗,而这可能并不是"本地主分支" 吗? - roulette01考虑到您可以在网络电缆未插入的情况下切换到 origin/master
(尽管是在脱离状态下),因此它必须是位于 origin
的 master
分支的本地表示。
我建议使用该命令合并开发和主分支
git checkout master
git merge --commit --no-ff --no-edit develop