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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从一开始就重新提交所有提交相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

答案

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

另一答案

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

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

另一答案

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将您的初始提交更改为指向您的回购的当前状态。

另一答案

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

git rebase -i abcd12

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

另一答案

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

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

以上是关于如何从一开始就重新提交所有提交的主要内容,如果未能解决你的问题,请参考以下文章

片段从一开始就没有显示 |安卓工作室

在 Git 中丢弃本地提交

在重新提交许多提交时如何防止许多 git 冲突?

html 输入类型提交通常在单击时重新加载页面。此片段使输入不重新加载页面以便进行ajax调用

Git:如何撤销已经提交的代码

如何重新创作 Git 存储库中的所有提交? [复制]