首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git Push: HEAD:refs/heads/<branch>和<branch>有什么不同?

Git Push: HEAD:refs/heads/<branch>和<branch>有什么不同?
EN

Stack Overflow用户
提问于 2016-07-21 11:48:58
回答 2查看 14.1K关注 0票数 15

命令1做了什么命令2不能做的事情?

代码语言:javascript
复制
1. git push <projectpath> HEAD:refs/heads/<branch>
2. git push <projectpath> <branch>

"HEAD:refs/heads/“的意思是什么?

EN

回答 2

Stack Overflow用户

发布于 2016-07-21 14:20:21

区别:

  • git push <projectpath> HEAD:refs/heads/<branch>:本地分支提交现在可以不同于远程分支提交,因为可以分离“头”(不链接到任何branch)
  • git push <projectpath> <branch>:)本地分支提交将始终与远程分支提交相同。

详细说明:

正确的分支(意味着不是detached HEAD)是存储在HEAD直接引用的refname中的提交。

这意味着直接对提交().执行HEAD is a symbolic refrefname (它包含实际的提交),或者直接执行另请参阅"HEAD: current commit“。

HEAD:refs/heads/<branch>是一个带有<src>:<dst>的,其中<src>通常是您想要推送的分支的名称,但它可以是任意的"SHA-1表达式“,例如master~4HEAD,并且<dst>告诉远程端上的哪个ref是通过此推送更新的。

如果您具有以下状态:

代码语言:javascript
复制
   git checkout abranch

   --x--Y--W--Y--Z (HEAD abranch)
     |
  (origin/abranch)

git push origin aBranch将推送分支头部(这里是Z)或原点,结果是;

代码语言:javascript
复制
   --x--Y--W--Y--Z (FEAD, abranch, origin/abranch)

但是如果你直接签出abranch的一个新的提交:

代码语言:javascript
复制
git checkout abranch~2

         (HEAD)
           |
   --x--Y--W--Y--Z (abranch)
     |
  (origin/abranch)

然后使用第二个语法进行推送,您将仅更新远程跟踪分支直到该W提交:

代码语言:javascript
复制
git push origin HEAD:refs/heads/abranch

         (HEAD)
           |
   --x--Y--W--Y--Z (abranch)
           |
  (origin/abranch)

即使HEAD没有引用abranchgit push origin aBranch仍然会推送整个分支。

票数 6
EN

Stack Overflow用户

发布于 2016-07-21 13:01:17

第一个命令显式推送具有给定名称的分支。例如,如果您有一个与某个分支同名的标记,则第二个命令将是不明确的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38494546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档