git 遠端提交合併
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-02 09:47:56
0
2
621

例如遠端master分支上有100次提交記錄

現在想把1-10次提交合併成一次提交,【就好像我只提交過一次一樣】其他11-100次提交保持不變。如何實現?

看了git rebase -i ,好像只能合併本地分支,合併以後怎麼影響遠端分支呢?

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

全部回覆(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 都變了,當然你的程式碼不會變


鑑於從最後一條翻到第一條可能會比較久。 。再提供一個想法(以下用 表示變量,不需要打。但其它符號都是要打的):

  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 就行

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!