命令1做了什么命令2不能做的事情?
1. git push <projectpath> HEAD:refs/heads/<branch>
2. git push <projectpath> <branch>"HEAD:refs/heads/“的意思是什么?
发布于 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 ref到refname (它包含实际的提交),或者直接执行另请参阅"HEAD: current commit“。
HEAD:refs/heads/<branch>是一个带有<src>:<dst>的,其中<src>通常是您想要推送的分支的名称,但它可以是任意的"SHA-1表达式“,例如master~4或HEAD,并且<dst>告诉远程端上的哪个ref是通过此推送更新的。
如果您具有以下状态:
git checkout abranch
--x--Y--W--Y--Z (HEAD abranch)
|
(origin/abranch)git push origin aBranch将推送分支头部(这里是Z)或原点,结果是;
--x--Y--W--Y--Z (FEAD, abranch, origin/abranch)但是如果你直接签出abranch的一个新的提交:
git checkout abranch~2
(HEAD)
|
--x--Y--W--Y--Z (abranch)
|
(origin/abranch)然后使用第二个语法进行推送,您将仅更新远程跟踪分支直到该W提交:
git push origin HEAD:refs/heads/abranch
(HEAD)
|
--x--Y--W--Y--Z (abranch)
|
(origin/abranch)即使HEAD没有引用abranch,git push origin aBranch仍然会推送整个分支。
发布于 2016-07-21 13:01:17
第一个命令显式推送具有给定名称的分支。例如,如果您有一个与某个分支同名的标记,则第二个命令将是不明确的。
https://stackoverflow.com/questions/38494546
复制相似问题