所以我从svn(code.google.com)迁移到git(github)。
我从svn repo导入了我的项目,并且它一路导入了所有提交历史记录。 我并不为这些评论感到自豪,因为这是我的第一个项目之一,并不是很严肃。
我想将所有内容重新组合成一个“初始导入”提交。
我把电脑上的所有内容都拉了,我正试图这样做。但我发现的只有:
git rebase -i master
但它只会重新修改和修改。
如何使用rebase清除所有历史记录中的github存储库?
答案 0 :(得分:115)
git rebase -i --root
将从头开始对所有提交进行交互式变基。
从那里,您可以将所有提交压缩为一个和/或执行其他编辑。
答案 1 :(得分:15)
如果你愿意,你可以改变并压缩一切(除了初始提交)但是为什么要这么麻烦?只需删除.git目录,运行git init
重新创建它,git add
所有内容,然后git commit
进行新的初始提交。
答案 2 :(得分:11)
Jefromi的回答是有效的,但如果您想保留现有的回购配置,或者为了以防万一,请保留提交内容,您可以执行以下操作:
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
将您的初始提交更改为指向您的回购的当前状态。
答案 3 :(得分:5)
从abcd12
中找出要开始压缩的提交的哈希值,然后专门针对该哈希值进行rebase。
git rebase -i abcd12
您正在使用master
进行rebase,这会针对主分支的尖端执行rebase。
答案 4 :(得分:2)
如果您希望将所有历史记录缩减为单个“初始导入”提交,只需删除.git
目录并创建新的本地存储库(保留备份一)。 git init . && git add . && git commit -m "Initial import"
。
这样的新存储库与您推送到GitHub的存储库没有共同的祖先,因此您必须git push --force
新创建的存储库。