git 远程提交合并
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-02 09:47:56
0
2
647

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

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

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

曾经蜡笔没有小新
曾经蜡笔没有小新

Antworte allen(2)
阿神

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

巴扎黑

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

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

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


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

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

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

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

  4. 提交这十个commit。git commit -m "<xxxx>"

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

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage