用于推送到位桶。
如果我这样做:
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是什么?为什么这很重要?
您必须记住,有不同类型的分支:
origin
。不过,从该存储库的角度来看,这样的分支是“本地”的。欢迎使用分布式版本控制! :)
branch_name
是local分支,而origin/branch_name
分支;它反映了位于
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_name
:
使用图形树查看器(如
gitk --all
)会向您显示,
origin/mybranch
和 mybranch
可能有所不同。
origin
只是克隆的
remote的
default名称,它(在您的情况下)包含一个分支
mybranch
(就像您的本地存储库)
因此,当您要求将
origin/mybranch
推至 origin
时,您正在将 origin
遥控器与自身同步,因此它不会执行任何操作(幸运的是,遥控器始终与其自身同步)。
名称
origin
是任意的,并且可以在克隆时使用 --origin
标志进行设置。origin/branch_name
是远程机器上的分支
只是
branch_name
是本地机器上的一个分支origin 是远程存储在 github 上的内容
当您第一次提交时,您将在本地提交到您的计算机