想压缩 git 的多个 commit 为一个,了解到 git rebase -i 可以,但它是交互式的压缩。
想用脚本自动化压缩,所以求助是否有非交互式的压缩方式?
故求助 V2 社区,谢谢
1
donghui OP |
2
otakustay 2017-03-02 11:55:05 +08:00
先 reset 回去再 commit 呗,但这比较危险
|
3
Chrisplus 2017-03-02 12:44:51 +08:00
压缩多次提交为一个的需求场景是什么呢?
如果仅仅是因为这多个 commit 属于一个 feature ,那么应该用分支 merge 的方法来进行吧 |
7
Chrisplus 2017-03-02 13:54:34 +08:00
|
9
momocraft 2017-03-02 14:00:26 +08:00
"squash 成一个 commit" 和 "创建一个和分支的顶端有相同内容的 commit" 是等价的。如果 reset+commit 有影响,那 rebase 同样有影响。
另外一个 commit 未压缩也就几百 B~几 k ,我好奇你们的 repo 大到什么程度... |
11
donghui OP @momocraft repo 一般也不大的,是我自己建了个 repo ,用脚本往上面备份一些东西, commit 比较频繁,时间久了这个就比较大了 [尴尬]
|
12
wellsc 2017-03-02 14:15:29 +08:00
git cherry-pick
|
14
QAPTEAWH 2017-03-02 14:54:30 +08:00
diff 生成 patch 然后再 apply ?
|
16
SoloCompany 2017-03-02 22:03:42 +08:00 via iPad
a1 a2 a3 a4
git reset --soft a1^ git commit -m "a1 ~ a4" 或者 git reset --soft a1 git commit --amend -m "a1 ~ a4" --ignore-date |
17
donghui OP @SoloCompany 嗯 这么倒是也可以~
|
18
SoloCompany 2017-03-03 11:05:56 +08:00 1
@donghui #17 去掉最后一个 --ignore-date 和 rebase -i 上选择了 pick, squash, squash, squash 是完全等价的
|
19
donghui OP @SoloCompany 是的, thanks
|