如何在git中删除第一个提交?
我很好奇如何在git中删除第一个提交。
做任何事情之前的修改是什么? 这个版本是否有名字或标签?
对我来说,最安全的方法是使用update-ref
命令:
git update-ref -d HEAD
它将删除指定的引用HEAD
,所以它会重置(轻轻地,你不会失去你的工作)你当前分支的所有提交 。
如果你想要合并第一个提交和第二个提交,你可以使用rebase
命令:
git rebase -i --root
最后一种方法是创build一个孤立分支,一个分支,但是没有任何提交历史,并且提交新的内容:
git checkout --orphan <new-branch-name>
在第一次提交之前什么都没有,因为每个提交都指向一个父提交。 这使得第一个提交特别(孤儿提交),所以没有办法引用以前的“状态”。
所以,如果你想解决提交,你可以简单地git commit --amend
:这将修改提交而不创build另一个。
如果您只想从头开始,请删除.git
存储库,然后使用git init
创build另一个存储库
你可能只想编辑你的第一个提交(因为总是有一个在git仓库中的第一个提交)。 考虑使用git commit --amend --reset-author
而不是通常的git commit --amend
。
如果你想保留其他分支,但是例如使主分支重新开始而没有其他分支的共同历史,一个安全的方法就是创build一个新的存储库,并将其中的内容推送到其他分支:
cd .. git init newrepo cd newrepo # make some initial commits git push ../oldrepo master:newmaster
这在旧版本库中创build了“newmaster”分支,其历史logging与任何其他分支不同。 当然,你也可以用`git push -f'来覆盖master。
如果你想销毁所有分支和所有现有的内容,那么只需运行rm -rf .git/
。
你可以做的另一个方法是:
- 签出到你想保留的分支(比如dev)
git checkout dev
- 现在,删除你想重置的
git branch -D master
- 现在,创build一个同名的空分支
git checkout --orphan master
当然,所有这些都取决于你的用例,但如果你有多个分支,删除.git
目录是没有意义的。
检查一个临时分支:
git checkout –orphan TEMP_BRANCH
添加所有文件:
git add -A
提交更改:
git commit -am“初始提交”
删除旧分支:
git分支-D主
将临时分支重命名为master:
git分支-m主
最后强制更新我们的仓库:
git push -f原点大师