【发布时间】:2022-01-09 19:29:12
【问题描述】:
我正在使用 git-p4 将多个分支从 Perforce 导入到 git 中,具有完整的历史记录,并且运行良好,除了各个分支最终都“无尾”。我确切地知道在哪个修订版(作为 Perforce 更改列表编号,现在作为新创建的 git 修订版)它们每个都是从主干分支出来的,我非常希望在我的新 git 中明确反映这一点存储库,但我似乎无法弄清楚如何实现它。
具体来说,在导入之后,如果我在我的任何分支上执行git log,它总是有一个没有父级的“最后”(最早)修订。我想对其进行装配,以便修订有一个父版本,它是沿 master 的特定修订版本。
大概我不能直接将一个分支拼接到master(即,简单地设置它的parent 链接),因为 git 哈希反映了完整的历史记录,所以我分支上的所有哈希都可能需要调整,并且我没关系。我可能需要某种变基操作,但同样,我似乎不知道该怎么做。到目前为止,我尝试过的所有事情都试图“重放”更改,好像要创建所有内容的略有不同的版本,并且它们导致了许多我没有时间也不想的合并冲突解决。每个修订版的内容都很好(由git-p4 创建);我要做的就是重新调整它们的链接方式。
具体来说,我想改变这个:
进入这个:
我查看了git-p4 的--detect-branches 选项,但它看起来也不能满足我的要求。如果有办法让git p4 sync 为分支中的“最后一个”修订版设置父级,而不是让它成为孤立的,那将是完美的,但我没有看到办法。
除了git-p4 的所有细节之外,我认为我想要的是(实际上)一种强制特定修订的方法 - 特别是在我的一个分支的“尾部”的这些孤立(无父)修订中的一个 - 到有一个 parent 链接,这是我选择的 SHA 哈希,然后重新计算该修订版的哈希(及其所有子级)以反映它。我想我可以戴上水管工的帽子并编写自己的脚本以某种方式执行此操作,但我希望有一种受支持的方式。
【问题讨论】:
标签: git branch perforce git-p4