origin/branch_name和branch_name之间的区别?

ste*_*t99 19 git bitbucket

推送到bitbucket.

如果我这样做:git push origin origin/branch_name我的提交没有被推送.

Total 0 (delta 0), reused 0 (delta 0)
Run Code Online (Sandbox Code Playgroud)

如果我做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)
Run Code Online (Sandbox Code Playgroud)

那么branch_name前面的起源/平均值是多少?为什么这很重要?

jub*_*0bs 31

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

  • (纯粹)本地分支机构,即您承诺的分支机构,
  • 生活在远程存储库中的分支,因为缺少更好的术语.您可能知道远程名称下的远程存储库,例如origin.但是,从该存储库的角度来看,这样的分支是本地的.欢迎使用分布式版本控制!:)
  • 远程跟踪分支机构.也简单地称为远程分支,如在Pro Git书中,但我发现这句话令人困惑; 远程跟踪分支更准确.它们是特殊的本地分支,其唯一目的是反映上次与服务器通信时生活在远程存储库中的分支的状态.特别是,您无法提交此类型的分支.

这里branch_name是一个本地分支,而是origin/branch_name一个远程跟踪分支; 它反映了相应分支origin的状态.

跑完后

git fetch
Run Code Online (Sandbox Code Playgroud)

所述远程跟踪分支origin/master和相应的分支生活在origin应同步是完全(模并发推到远程服务器,当然).那么,那应该不足为奇

git push origin origin/branch_name
Run Code Online (Sandbox Code Playgroud)

不推送任何东西:你实际上是在尝试推送已经存在于相应分支origin的祖先中的东西.

但是,如果您的本地分支branch_name提前一个或多个提交,

在此输入图像描述

然后跑

git push origin branch_name
Run Code Online (Sandbox Code Playgroud)

将推送包含branch_name但不包含在生活分支中origin的提交:

在此输入图像描述