我有一个长期运行的 PR,已合并到main
分支。但是,在合并 PR 以便将来进行修复之前,我需要为主分支创建一个标签!
现在 PR 已合并(使用合并策略),我如何到达分支历史记录中的某个点main
,在该点上我可以创建一个标签,其中包含最新的main
分支,不包括该特定 PR 的所有提交?请注意,PR 本身已更新了main
几次。
有可能吗?
编辑:问题已关闭,标记为重复,无需阅读说明。另一个问题只是关于针对特定提交进行标记,但有两个问题是不相关的。我已经知道如何标记提交;我需要确切地知道 PR 合并后应该使用哪个提交(以及如何找到它),以便我可以
main
在 PR 合并之前标记分支。PR合并合并了历史。
该命令
git tag
允许您为历史记录中的任何提交定义标签,也可以在分支的 HEAD 提交之前提交。这是该命令的一般语法:在您的情况下,如果您位于分支上
main
并且需要在合并之前为提交创建标签,您可以使用:更新以回答已编辑的问题
我之前给出的答案仍然回答了你的问题。然而,它只有在已经产生合并提交的情况下才能工作。在这里,我将深化我的答案并进一步探讨其细节。
假设您已经在 GitHub 或类似服务上处理了 PR,则合并很可能会产生合并提交。事实上,这些平台倾向于引入合并提交,即使合并可以通过快进退化合并来解决。这意味着
main
分支的尖端有两个父级:的前一个尖端和另一个分支的尖端(为简单起见,我假设在合并两个分支和另一个分支main
后没有应用进一步的更改)。main
合并提交至少有两个父级,具体取决于合并策略,以及有多少分支同意合并。因此,根据 的Ancestry References段落中的官方文档
Git Tools - Revision Selection
,您可以使用插入符号来引用 的main
前一个提示。因此,我原来的帖子确实回答了您的问题,并允许您标记
main
之前的 HEAD 提交。相反,如果由于某种原因 PR 没有在您的托管服务上处理,而是在本地处理
git merge
(虽然我非常怀疑,但我们可以这么说),Git 在ORIG_HEAD
执行某些操作时总是会保存分支的先前 HEAD 提交、 点赞merge
或重置。因此,在这不太可能的第二种情况下,您可以将main
的前一个提示标记为: