Git: 有没有办法在不推送标签的情况下推送仅由标签持有的提交?
Git: Is there a way to push a commit only held by a tag, without pushing the tag?
场景:
创建一个 tmp
分支
提交一些临时更改
标记提交 tmptag
x-x-x-y-y <- master
\
z <- tmp [tmptag]
删除tmp
分支
x-x-x-y-y <- master
\
z <- [tmptag]
现在我有一个提交 z
仅由标签 tmptag
.
持有
我知道如果您将 tmptag
推送到远程(通过名称或通过推送所有标签),提交 z
也将被推送。
问题:
是否有任何其他命令可以将 z
推送到远程?
另外,如果具体我push所有分支,z
不会不会被push吧?
是的,任何说 请求另一个 Git 请设置一些名称以指向 ID 为 z
[=36= 的提交] 将转移提交 z
。例如:
git push $(git rev-parse tmptag^{}):refs/heads/newbranch
会要求另一个 Git 创建分支 newbranch
指向标记的提交。 (当且仅当 tmptag
是带注释的标记时才需要 ^{}
后缀。)您还可以使用原始哈希 ID 和分支名称以外的其他内容,前提是另一个 Git允许您推送到该引用。
正确:因为 z
无法从分支名称访问,它将(至少通常 1)不会被发送。
1每个Git传输负责收集要发送和发送的对象,如果某些传输很奇怪或粗心什么的,它可以收集提交z
并发送。内置的推送传输(通常用 --thin
调用 git send-pack
)不会那样做,但有趣的是考虑 z
是包中的基础对象的情况,并且一些 deltified同包中的对象也需要发送。
场景:
创建一个
tmp
分支提交一些临时更改
标记提交
tmptag
x-x-x-y-y <- master \ z <- tmp [tmptag]
删除
tmp
分支x-x-x-y-y <- master \ z <- [tmptag]
现在我有一个提交 z
仅由标签 tmptag
.
我知道如果您将 tmptag
推送到远程(通过名称或通过推送所有标签),提交 z
也将被推送。
问题:
是否有任何其他命令可以将
z
推送到远程?另外,如果具体我push所有分支,
z
不会不会被push吧?
是的,任何说 请求另一个 Git 请设置一些名称以指向 ID 为
z
[=36= 的提交] 将转移提交z
。例如:git push $(git rev-parse tmptag^{}):refs/heads/newbranch
会要求另一个 Git 创建分支
newbranch
指向标记的提交。 (当且仅当tmptag
是带注释的标记时才需要^{}
后缀。)您还可以使用原始哈希 ID 和分支名称以外的其他内容,前提是另一个 Git允许您推送到该引用。正确:因为
z
无法从分支名称访问,它将(至少通常 1)不会被发送。
1每个Git传输负责收集要发送和发送的对象,如果某些传输很奇怪或粗心什么的,它可以收集提交z
并发送。内置的推送传输(通常用 --thin
调用 git send-pack
)不会那样做,但有趣的是考虑 z
是包中的基础对象的情况,并且一些 deltified同包中的对象也需要发送。