如何从一开始就重新提交所有提交

问题描述 投票:36回答:5

所以我从svn(code.google.com)迁移到git(github)。

我从svn repo导入了我的项目,并且它一路导入了所有提交历史记录。我并不为这些评论感到自豪,因为这是我的第一个项目,并不是非常严肃。

我想将所有内容重新组合成一个“初始导入”提交。

我把所有东西都拉到了我的电脑上,而我正试图这样做。但我发现的只有:git rebase -i master但它只会改变新的修改和提交。

如何使用rebase清除所有历史记录中的github存储库?

git github
5个回答
14
投票

如果你愿意,你可以改变并压缩所有东西(初始提交除外),但为什么要这么麻烦?只需删除你的.git目录,运行git init重新创建它,git add一切,git commit进行新的初始提交。


112
投票

git rebase -i --root将从一开始就开始对所有提交进行交互式变革。

从那里,您可以将所有提交压缩为一个和/或执行其他编辑。


11
投票

Jefromi的答案可行,但如果您想保留现有的repo配置,或者为了以防万一,请保留提交内容,您可以执行以下操作:

git checkout master

git branch backup可选择在此处留下另一个分支,以防您想保留历史记录。

git reset --soft $SHA_OF_INIT_COMMIT这将更新HEAD指向的内容,但保留索引和工作目录的当前状态。您可以使用git log --pretty=format:%h --reverse | head -n 1获取SHA,并使用git reset --soft $(git log --pretty=format:%h --reverse | head -n 1)迈出这一步

git commit --amend将您的初始提交更改为指向您的回购的当前状态。


5
投票

找到你要从abcd12开始压缩的提交的哈希值,然后专门针对该哈希值进行rebase。

git rebase -i abcd12

你正在使用master来反对,它会对主分支的尖端执行rebase。


2
投票

如果您想将所有历史记录缩减为单个“初始导入”提交,只需删除.git目录并创建一个新的本地存储库(保留旧存储库的备份)。 git init . && git add . && git commit -m "Initial import"

这样的新存储库与您推送到GitHub的存储库没有共同的祖先,因此您必须使用git push --force新创建的存储库。

© www.soinside.com 2019 - 2024. All rights reserved.