我最近开始了一个新项目,并且我已经开始做了很多实验。现在有些新人加入了,我想知道从git历史中删除第一个提交,因为它们似乎毫无意义,每个浏览回购的人都会感到困惑。
一个可能的解决方案是从头开始设置一个新的仓库,但我更愿意重写历史。
我需要的是将master上的HEAD提交设置为repo中的第一个也是唯一的提交。
答案 0 :(得分:1)
如果您想使用git rebase
,您可能会被Git - squash entire branch - one line squash command强行插入。
如果您有大量提交的历史记录,git rebease
可能需要很长时间。在这种情况下,您可以制作浅层克隆
git clone --depth 1 <REPO_URL>
比做
git commit --amend
以创建包含最新更改的独立提交 而不是强行推动
git push -f
答案 1 :(得分:0)
在本地存储库中压缩所有不需要的提交,然后使用--force
选项将它们推送到远程存储库。
答案 2 :(得分:0)
如果您确定自己在做什么,可以在第一次提交时进行交互式改造:
git rebase --interactive --root
并修复每一次提交。 但至少我建议在结束之前检查另一个分支:
git checkout -b rebase
答案 3 :(得分:0)
您可以使用
创建没有任何父提交的新根分支git checkout --orphan new-master
使用
将存储库状态提交到该新分支git add .
git commit
并使用
将其推送到服务器git push --force origin new-master:master
这将使旧历史记录在服务器上无法访问,因此请谨慎使用。