代码之家  ›  专栏  ›  技术社区  ›  ayushgp

git rebase按哈希进行挤压提交

  •  2
  • ayushgp  · 技术社区  · 6 年前

    我有一家分公司,约有10个客户。其中3个是merge-commits合并主节点到我的分支,每次添加约500个提交。是否有方法将当前分支上的提交压缩为一个?我的历史是这样的:

    ad54ef86 My Commit 1
    ad54ef86 Merge commit
    ad54ef86 Others' Commits
    ....500 more others' commits
    ad54ef86 My Commit 2
    ad54ef86 My Commit 3
    ad54ef86 Merge commit
    ad54ef86 Others' Commits
    ....500 more others' commits
    ad54ef86 My Commit 4
    ...
    

    现在做 git rebase -i HEAD~2000 搜索是一项艰巨的工作。有办法绕过吗?

    编辑 :因此,这个问题被标记为挤压最后n个提交的副本。这显然不是我的问题。在合并此分支中的另一个分支并以这种方式获取所有提交后,我想压缩仅在当前分支上执行的最后n个提交。

    1 回复  |  直到 6 年前
        1
  •  5
  •   rdf    6 年前

    首先,我想问一下你的回扣的目的是什么?是否最终将提交推送到远程? 或者,您是否只想将提交放在最上面,然后继续在本地工作? 不管怎样,我建议你采取以下步骤:

    1. 从远程主分支开始创建新分支。这将从远程主机获取所有提交。
    2. 切换到新的分支。
    3. 从你描述的旧分支开始挑选你的承诺。这将有助于了解你的承诺的散列。这将得到所有的承诺,从主人在您的承诺。请注意,您在新分支中提交的哈希值将被重写。
    4. 如果需要,现在可以将您的提交压缩并推送到远程。

    下次需要同步到远程时,请记住执行提取和重新定位。