gpt4 book ai didi

git - 我可以推送在分离的 HEAD 状态下进行的提交吗

转载 作者:太空狗 更新时间:2023-10-29 13:20:01 26 4
gpt4 key购买 nike

我想使用 git 进入分离的 HEAD 状态并创建一个新的提交。然后我想创建一个标签并将“分离提交”和标签推送到远程仓库。这可能吗?

如果我在我的本地存储库中创建分离的提交并创建一个标签,那么我可以 checkout 该标签以返回到该状态。我想与远程存储库共享它,以便其他用户可以克隆存储库并 checkout 标签并达到相同的状态。

我想这样做的原因是因为构建过程需要在文件中捕获构建 # 但我不想将其提交给正在进行开发的分支。我希望提交是独立的,但也想捕获提交并标记它,以便任何人都可以 checkout 标记和构建中包含的文件。是否建议将提交推送到不同的分支,比如“构建”?

最佳答案

是的,这个——我说的“这个”是指主要问题,“你能推送一个带标签但不包含分支的提交吗?”——非常好。注意 git push通过调用其他 Git(例如,ssh://... 或 https://... 通过互联网电话调用其他 Git)来工作,如有必要,提供一些提交,然后询问其他 Git:“请设置一个引用名称以指向某些特定的提交”。

既然你有一个标签,你可以要求其他 Git 设置相同的标签。假设 Remote 名为 origin (通常是这样):

git push origin <tag>

你可以拼出全名,refs/tags/<em>tag</em> , 如果需要的话。如果标签名称很容易与分支名称区分开来(例如,标签是 v2.x 并且分支永远不会以 v 开头),则永远不需要它(但通常它可能仍然是明智的)。

如果您没有标签,您仍然可以这样做,但您必须为其他 Git 提供一个名称。为此,您需要执行以下操作:

git push origin HEAD:refs/heads/newbranch

或:

git push origin HEAD:refs/tags/newtag

这里棘手的一点是,在推送期间,你不知道他们是否有一个分支 newbranch或标记 newtag已经。如果您自己设置了标签,并且一直从他们那里获取标签,您可能有一个好主意——当然不能保证——他们也没有那个标签。

请注意,如果他们确实有那个名字,而您礼貌地请求他们更改他们的名字以指向其他提交,他们可能会拒绝。这是你看到 rejected 的时候推送错误。您可以命令它们(在 refspec 上使用 git push --force+ 前缀语法),但这通常不是正确的方法,而且它们仍然可以拒绝(这部分取决于控制另一个 Git 的人)。

关于git - 我可以推送在分离的 HEAD 状态下进行的提交吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37198784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com