在清理(主要是压缩)某些较大功能的历史记录时,我经常会遇到以下情况:
Commit A:
- change A.1
- change A.2
- change A.3
// EDIT: maybe some more commits
Commit B:
- change B.1
- change B.2
- change B.3
假设现在我想使用交互式变基将"change B.1"移动到提交A。迄今为止,我发现唯一的方法是:
- 启动"rebase -i"
- 编辑提交B
- 将提交B拆分为临时提交和提交B("reset HEAD^"然后"add -p")
- 启动"rebase -i"
- 在提交A中修正临时提交
有没有更好/更有效的方法来实现这一点?
B
时,这将合并双重更改,因此根据历史记录的复杂性(例如在A
和B
之间的其他提交),应用B
可能会创建不必要的合并冲突,这样对吗? - gzm0git reset --hard
清除未暂存更改非常感兴趣,这相比git checkout .
有什么优势吗? - jackocnrgit reset
,因为这些更改已经被暂存了。 (3)当应用提交 B 时,您不应该遇到任何冲突,它应该跳过已经应用的任何更改(假设您将移动到 A 的更改与留在 B 中的更改干净地分开)。 - jackocnr