如何将所有以前的提交合并为一个提交?

6

背景: 在GitHub上开始了一个项目,并尝试使用git命令。该项目的历史记录比较混乱。

问题:我该如何删除所有历史记录,并将所有提交信息替换为“上传了项目源代码的初始版本”之类的内容?

2个回答

9

该选项将允许您保存项目的所有配置文件。
git reset --soft <sha_of_initial_commit>
git commit -a --amend -m "initial commit"


+1. git reset --soft 的另一个用途已添加到现有列表中:https://dev59.com/7G435IYBdhLWcg3wyzaa - VonC
@Andy 我已经尝试过这个方法,但是我得到了一长串带有 create mode ... 的文件名列表。似乎什么也没有发生。我尝试在这些命令的末尾添加 git push,但还是没有任何变化。我是不是漏掉了什么?谢谢。 - Lea Hayes
1
你将会得到一个很长的列表,因为它将所有文件都添加回你的代码库。 git push -f的输出是什么?你有检查过Github并且确认你获得了想要的结果吗? - Andy
@Andy push -f 工作得非常完美。这个命令有什么不同之处吗? - Lea Hayes
由于您重写了历史记录,因此push需要-f标志以确保您知道正在更改历史记录。 - Andy

3

移除.git目录。

git init
git add .
git commit -m "初始提交"
git push origin master


3
如果这是颠覆行为,答案可能会涉及在某个时刻献祭一头牛。 - Stefan Kendall
4
推送不起作用,如果仓库刚初始化,那么怎么会有“_origin_”呢? - Andy
另外,假设您已经添加了“origin”,那么它需要进行强制推送。 - Mark Longair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接