假设我在分支上feat
有一个test.txt
包含此内容的文件。
111
然后我进行了提交B
,添加了这两行。
111
+ 222
+ 333
git 历史记录如下所示
A
|
B(origin/feat) # adding 222, 333
然后我意识到333
应该在另一个提交上,以便另一个分支可以对其进行挑选。所以我创建了另一个提交来删除333
。
111
222
- 333
A
|
B(origin/feat) # adding 222, 333
|
C(feat) # removing 333
现在有没有办法重写历史记录,使提交历史记录看起来像这样?
A
|
D # adding 222 (state of C)
|
E(origin/feat) # adding 333 (state of B)
我不介意重写历史并强制推送,因为我是唯一一个在这个分支上工作的人。
使用最少陌生命令的方式:
减少工作树流失的方法:
一个可行的例子:
@jthill 使用管道命令
read-tree
和的解决方案的替代方法commit-tree
是,通过混合重置为提交B
,然后使用编辑选项对行进行补丁添加,以提交此单个更改 (提交)。最后,您可以提交剩下的唯一更改 (行) 并获得提交。222
D
333
E