gpt4 book ai didi

git - 如何压缩本地分支上的特定提交?

转载 作者:IT王子 更新时间:2023-10-29 00:39:59 26 4
gpt4 key购买 nike

我可以在那里找到一些接近我想要的答案,但恐怕我对 Git 的经验还不够丰富,无法完全理解如何实现我想要的。

给定一个包含提交 A-B-C-D-E-F-G-H-I-J 的本地分支,我想将一些提交压缩到一起,这样我最终得到例如 A-BCD-E-FGH-IJ 的等价物。

这可能吗?目的是在 rebase 之后但在 merge 回 master 分支之前对本地分支执行此操作,以创建更简洁和信息更丰富的历史记录。

最佳答案

你可以用rebase来做到这一点。假设提交 A–J 位于 master 之上的本地分支 branchname 上,那么您可以这样做:

git checkout branchname
git rebase -i master

您将看到一个像这样的交互式窗口:

pick A Commit message A
pick B Commit message B
pick C Commit message C
pick D Commit message D
pick E Commit message E
...

Interactive rebase 为您的场景提供了说明,因此您应该将 C 和 D 的“pick”更改为“squash”(对于 G、H 和 J 也是如此):

pick A Commit message A
pick B Commit message B
squash C Commit message C
squash D Commit message D
pick E Commit message E

这会将 B、C 和 D 压缩为一个提交,允许您更改提交消息。

如果您乐于使用 B 的提交消息,您可以使用“fixup”而不是“squash”,并且不会提示您更新提交消息。


交互式窗口非常强大,您可以根据需要对提交重新排序,甚至只需删除该行(或将前缀更改为“drop”),该提交就会被删除。例如,如果 E 修正了你在 A 中的拼写错误,你可以这样做:

pick A Commit message A
fixup E Commit message E
pick B Commit message B
pick C Commit message C
pick D Commit message D

但是,当您重新排序提交时,您会冒着必须解决冲突的风险。您始终可以使用 git rebase --abort 返回到原始状态。

关于git - 如何压缩本地分支上的特定提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24310554/

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