git 远程提交合并

浏览:28日期:2023-09-03

问题描述

例如远程master分支上有100次提交记录

现在想把1-10次提交合并成一次提交,【就好像我只提交过一次一样】其他11-100次提交保持不变。如何实现?

看了git rebase -i ,好像只能合并本地分支,合并以后怎么影响远程分支呢?

问题解答

回答1:

git rebase -i HEAD~99然后把最远的10次提交前面的pick改为squash。然后强制提交 git push -f试试看,不知道行不行

回答2:

楼上说的方式没错,但是应该是 git rebase -i HEAD~100 吧。HEAD~99 只能读取到 2~100 次提交,读不到第一次的。

另外,找到最远的 10 次提交之后,其实不一定要改成 squash(或者s),如果你不打算保留提交信息,用 fixup(或者f)就行了。。

修改之后肯定是要 git push -f 的,因为你的 timeline 和后续的 commit hash 都变了,当然你的代码不会变

鉴于从最后一条翻到第一条可能会比较久。。再提供一种思路(以下用 <xxx> 表示变量,不需要打出来<和>。但其它符号都是要打的):

在当前 branch 基础上新建一个 branch: git checkout -b newBranch

在新 branch 上回滚到提交第一次之前: git reset --hard <commit1Hash>

Cherry pick 前十条 commit,放到缓冲区: git cherry-pick -n <commit1Hash>..<commit10Hash>

提交这十个commit。git commit -m '<xxxx>'

Cherry pick 剩余 commit,不放到缓冲区(直接添加到 timeline): git cherry-pick -n <commit11Hash>..<commit100Hash>

这样你就在一个新的 branch 上搞好了你想要的。合并到你要修改的 branch 就行

相关文章: