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

时间:2011-12-22 14:42:18

标签: git github

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

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

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

我把电脑上的所有内容都拉了,我正试图这样做。但我发现的只有: git rebase -i master但它只会重新修改和修改。

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

5 个答案:

答案 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新创建的存储库。