搜尋

首頁  >  問答  >  主體

git 遠端提交合併

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

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

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

曾经蜡笔没有小新曾经蜡笔没有小新2821 天前666

全部回覆(2)我來回復

  • 阿神

    阿神2017-05-02 09:49:56

    git rebase -i HEAD~99
    然後把最遠的10次提交前面的pick改為squash。
    然後強制提交 git push -f
    試試看,不知道行不行

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-02 09:49:56

    樓上說的方式沒錯,但是應該是 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 就行

    回覆
    0
  • 取消回覆