gpt4 book ai didi

git - 我怎样才能去掉几个旧的提交,但在 git 中保持所有其他提交不变?

转载 作者:太空狗 更新时间:2023-10-29 13:45:54 25 4
gpt4 key购买 nike

假设提交的结构如下所示:

                 B'---C'           X'
/ \ / \
A---B---C---D---...---X---Y---Z(master)

现在我需要去除 A 和 X 之间的所有提交,

                         X'
/ \
A---X---Y---Z

AFAIK,至少有两种方法可以实现:

  • git rebase -i A
  • git branch -f new_branch A; git rebase --onto master X

但总有一些冲突需要我手动处理。

因为我只想清除 A 之后和 X 之前的所有提交,并且我不需要在每次提交后更改任何 git 跟踪结果(例如,新生成的提交 X 与旧的 X 提交共享相同的内容),有更简单的方法吗?

最佳答案

注意:此解决方案会将您想要“剥离”到 X 中的提交压缩,以便新的 X 提交和所有后续提交的文件都处于与现在完全相同的状态。如果这不是您想要的,请参阅我的 other answer .


git checkout -b temp A
git merge X --squash
git commit -C X # Create new x commit
git checkout master
git rebase --preserve-merges --onto temp X # Rebase onto new X commit (should produce no conflicts)
git -d temp

关于git - 我怎样才能去掉几个旧的提交,但在 git 中保持所有其他提交不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17214168/

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