如何压制一些"之前的"离开"最新"承诺保存?

时间:2016-02-12 09:26:21

标签: git version-control

我克隆了one of Github boilerplate project,但忘了重置原始仓库的历史记录,并且已经在其主分支上创建了相当多的提交。

现在我的提交历史就是这样。

初始提交 - (数百个样板提交) - (我的数十次提交)

我想做的是"壁球" (或"结合"如果"壁球"这里不是一个合适的词)来自原始仓库的所有提交,我已经克隆了离开我的最新提交在历史上。我试图通过使用git rebase --root -i来做到这一点,但是有数百次提交来压缩(orignal repo)并选择(我自己的回购),这使得很难这样做。

有没有方便的方法来实现这一目标?如果我在自己的提交开始之前丢失了所有历史记录,或者我创建了一个新的回购,我不介意。

2 个答案:

答案 0 :(得分:1)

为了做一个git squash,请按照以下步骤操作:

// X is the number of commits you wish to squash
git rebase -i HEAD~X

一旦你压缩你的提交 - 选择s进行squash =它会将所有提交合并为一个提交。

为最新提交选择以保留它。

enter image description here

答案 1 :(得分:1)

假设最后一个"锅炉板提交" SHA为abc123,您当前的分支为master,请执行以下操作:

git branch my-new-branch master
git checkout abc123 --orphan temp-branch
git commit -m "Initial boilerplate code"
git rebase --onto temp-branch abc123 my-new-branch
git branch -d temp-branch

这将使my-new-branch指向您的所有提交,然后是锅炉板代码的单个压缩提交。您可以将此分支推送到新的仓库,或者(如果这是仅限本地的仓库,或者您不介意进行强制推送)删除master并将my-new-branch重命名为{{1等等。