origin / branch_name和branch_name之间的区别?

时间:2014-09-30 15:59:15

标签: git bitbucket

推送到bitbucket。

如果我这样做: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前面的起源/平均值是多少?为什么重要?

4 个答案:

答案 0 :(得分:27)

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

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

此处,branch_name本地分支,而origin/branch_name远程跟踪分支;它反映了origin 中相应分支的状态。

跑完后

git fetch
远程跟踪分支origin/master以及origin
中相应的分支应完全同步(模数并发推送到当然是远程服务器)。那不应该是一个惊喜

git push origin origin/branch_name

不推送任何内容:您实际上是在尝试推送已存在于origin 中相应分支的祖先中的内容。

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

enter image description here

然后运行

git push origin branch_name

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

enter image description here

答案 1 :(得分:2)

使用图形树查看器(如gitk --all)会显示origin/mybranchmybranch可能不同。

origin只是克隆远程默认名称,(在您的情况下)包含分支mybranch(就像您的一样)本地存储库)

所以,当您要求origin/mybranch推送到origin时,您正在将origin遥控器与自身同步,因此它无法执行任何操作(幸运的是遥控器始终与自身同步。

名称origin是任意的,可以在克隆时使用--origin标记进行设置。

答案 2 :(得分:1)

  • origin/branch_name是远程计算机上的分支
  • 只是branch_name是本地计算机上的分支

答案 3 :(得分:0)

origin是什么东西远程存储在github上

没有来源是您计算机本地存储的内容

当您提交1st时,您将在本地提交到您的计算机

当您推送原始分支名称时,您将推送到github