origin/branch_name 和branch_name 之间的区别?

问题描述 投票:0回答:4

用于推送到位桶。

如果我这样做:

git push origin origin/branch_name
我的提交不会被推送。

Total 0 (delta 0), reused 0 (delta 0)

如果我这样做

git push origin branch_name
我的提交就会被推送:

Counting objects: 160, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (13/13), done.
Writing objects: 100% (20/20), 2.10 KiB | 0 bytes/s, done.
Total 20 (delta 6), reused 0 (delta 0)

那么branch_name前面的origin/mean是什么?为什么这很重要?

git bitbucket
4个回答
48
投票

您必须记住,有不同类型的分支:

  • (纯粹)本地分支,即您承诺的分支,
  • 位于远程存储库中的分支,因为缺乏更好的术语。您可能知道有问题的远程存储库的远程名称,例如
    origin
    。不过,从该存储库的角度来看,这样的分支是“本地”的。欢迎使用分布式版本控制! :)
  • 远程跟踪
  • 分支机构。也简称为“远程分支”,如“Pro Git 书”中所示,但我发现这个短语令人困惑; 远程跟踪分支更准确。它们是特殊的本地分支,其唯一目的是反映您上次与服务器通信时“远程存储库中的分支”的状态。特别是,您不能提交这种类型的分支。 这里,branch_namelocal分支,而origin/branch_name
remote-tracking

分支;它反映了位于

origin
的相应 分支的状态。
跑步后
git fetch

远程跟踪分支
origin/master
和位于

origin

中的相应
分支应该完全同步(当然,模并发推送到远程服务器)。那么,这应该不足为奇

git push origin origin/branch_name 不推送任何内容:您本质上是在尝试推送位于

origin
中的相应
 分支的祖先中已经存在的内容。
但是,如果您的

local
 分支 
branch_name

领先于一项或多项提交,


然后跑步

git push origin branch_name

会将 
branch_name

中包含的提交推送到

origin/branch_nameenter image description here:

    

使用图形树查看器(如 
gitk --all
)会向您显示,
origin/mybranch

mybranchenter image description here 可能有所不同。


4
投票
origin

只是克隆的

remote
default
名称,它(在您的情况下)包含一个分支
mybranch
(就像您的本地存储库)

因此,当您要求将

origin/mybranch
推至 origin 时,您正在将 origin 遥控器与自身同步,因此它不会执行任何操作(幸运的是,
遥控器
始终与其自身同步)。

名称

origin
是任意的,并且可以在克隆时使用
--origin
标志进行设置。
    

origin/branch_name

是远程机器上的分支
只是
branch_name

是本地机器上的一个分支

3
投票
  • origin 是远程存储在 github 上的内容
  • 无来源是存储在您计算机本地的内容
  • 当您第一次提交时,您将在本地提交到您的计算机
  • 当你推送原始分支名称时,你正在推送到 github

1
投票

© www.soinside.com 2019 - 2024. All rights reserved.