我克隆了one of Github boilerplate project,但忘了重置原始仓库的历史记录,并且已经在其主分支上创建了相当多的提交。
现在我的提交历史就是这样。
初始提交 - (数百个样板提交) - (我的数十次提交)
我想做的是"壁球" (或"结合"如果"壁球"这里不是一个合适的词)来自原始仓库的所有提交,我已经克隆了离开我的最新提交在历史上。我试图通过使用git rebase --root -i
来做到这一点,但是有数百次提交来压缩(orignal repo)并选择(我自己的回购),这使得很难这样做。
有没有方便的方法来实现这一目标?如果我在自己的提交开始之前丢失了所有历史记录,或者我创建了一个新的回购,我不介意。
答案 0 :(得分:1)
为了做一个git squash,请按照以下步骤操作:
// X is the number of commits you wish to squash
git rebase -i HEAD~X
一旦你压缩你的提交 - 选择s
进行squash =它会将所有提交合并为一个提交。
为最新提交选择以保留它。
答案 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等等。