"origin master"和"origin/master"有什么区别?

50

运行git命令时,空格和斜杠有什么区别?

有时我会看到:

git push origin master(使用空格)

而其他时候我会看到:

git rebase origin/master(使用斜杠)

这种约定有什么区别吗?是不是斜杠符号访问本地缓存副本,而使用空格版本实际上会访问远程库(github)?


相关: https://dev59.com/UXzaa4cB1Zd3GeqPXP0h#22055959 - Marc Stober
1个回答

21

这不是“惯例”(convention)。前者是两个不同位置、有不同含义的参数,用于 git push 命令;而后者是一个单独的参数,用于标识远程跟踪分支 origin/master


6
具体来说,git push origin master 更通用的写法是 git push <远程名称> <分支名称> - Ryan Stewart
10
我理解其中一个是两个独立的参数,而另一个是一个参数;但我不太明白指定远程跟踪分支和指定远程名称分支名称之间的区别。对我来说,它们都引用了远程仓库中的一个分支,那么为什么它们不能互换使用呢? - Homan
7
因为它们并没有同时指定一个远程仓库和该仓库中的一个分支。使用 git push 命令时,您正在指定远程仓库,并且指定了一个 refspec(可能不仅仅是一个裸分支名称,请查阅手册)。而使用 origin/master 表示您正在指定一个“远程”分支,实际上它是一个本地分支,用于跟踪远程分支,并通过 git fetchgit pull 进行更新。 - Lily Ballard
9
master 是你本地的主分支。origin/master 是你本地的“远程跟踪”分支,代表了origin 远程仓库中 master 分支的状态,并在你运行 git fetchgit pull 命令时更新。 - Lily Ballard
5
git pull 命令会更新远程跟踪分支 origin/master,然后将其合并到您本地的分支(可能是 master 分支)。如果您本地没有更改过代码,则合并是一个快进操作。如果您只想要更新 origin/master 而不修改本地分支,请使用 git fetch 命令代替 git pull 命令。git fetch origin 命令应该会更新您在 origin 远程的所有远程跟踪分支。 - Lily Ballard
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接