git 如何在压缩的提交上重定依赖分支的基以避免冲突?

bvhaajcl  于 2024-01-04  发布在  Git
关注(0)|答案(1)|浏览(112)

我有三个分支

  • 功能A(不由我管理)
  • 功能B(由我管理)
  • 分支main

我的B分支依赖于分支A,而A已经在main分支中被压缩。
这张图表显示了当前的形势。


的数据
我想移动(变基)B到对应于Squashed A的注解上。
我使用了git checkout B && git rebase main命令来重定基它,但是我有很多冲突需要管理,并且不容易避免问题或错误。
我已经找到了This post,但我有一个已经压扁的分支(不是被我压扁的)。
我怎么能用很少的命令就得到这样的结果,而不用很少的命令就有这么多的错误呢?


bvuwiixz

bvuwiixz1#

您链接的问题实际上包含您问题的答案:

# With start exclusive, end inclusive
# git rebase --onto <where> <current-start> <current-end>

# Presented in a specific way for your case:
# git rebase --onto <squashed-commit> <old-non-squashed-branch-or-revision> <feature-branch>

# That is:
git rebase --onto main A B

字符串
这应该会给你给予与B在操作前完全相同的内容。

  • 您可以在执行任何操作之前创建标记并在操作之后使用git diff <tag-before-ops> B进行双重检查。*
    **重要提示:**正如@eftshift0所建议的,这是假设A没有改变,仍然处于压缩之前的状态。

如果不是这样的话,你可以在压缩之前使用任何指向A状态的ref,就像这个例子中的B~2,或者直接使用提交哈希。

相关问题