如何以非交互方式将较早的提交移动到第一个提交?

问题描述 投票:0回答:1

每次提交仅包含对一个文件的更改。起始状态:

* 248e458 (HEAD -> master, origin/master) A.txt
* 2dd589d B.txt
* cf47156 A.txt
* 38d0f87 B.txt

问题:如何将

2dd589d B.txt
(对B.txt的最后修改)移动到顶部?在这种情况下移动
2dd589d B.txt
不会改变工作树。

* 2dd589d (HEAD -> master, origin/master) B.txt
* 248e458 A.txt
* cf47156 A.txt
* 38d0f87 B.txt

目标是首先将此提交移动到第一个,然后将

--amend
与包含对
B.txt
更改的下一个提交一起移动。所以我可以保留
2dd589d B.txt
中引入的更改并添加
5a61192 B.txt
中引入的一些内容。

commit --amend -m B.txt
后的理想结果:

* 5a61192 (HEAD -> master, origin/master) B.txt
* 248e458 A.txt
* cf47156 A.txt
* 38d0f87 B.txt

到目前为止我尝试过:

git rebase --onto cf47156 2dd589d

但这会更改工作树并删除 2dd589d B.txt 引入的所有更改。

git
1个回答
0
投票

我建议:

# starting from a clean worktee with all
# changes stashed or committed:
git reset --hard cf47156
git cherry-pick 248e458 2dd589d
© www.soinside.com 2019 - 2024. All rights reserved.