How to remove the first commit in git?

2019-01-16 01:48发布

I am curious about how to remove the first commit in git.

What is the revision before committing any thing? Does this revision have a name or tag?

7条回答
我想做一个坏孩纸
2楼-- · 2019-01-16 02:13

If you have just committed it but not pushed it then just remove .git directory and git init again...

查看更多
再贱就再见
3楼-- · 2019-01-16 02:20

You might just want to edit your first commit (as there is always a first commit in a git repo). Consider using git commit --amend --reset-author instead of the usual git commit --amend.

查看更多
淡お忘
4楼-- · 2019-01-16 02:25

For me, the most secure way is to use the update-ref command:

git update-ref -d HEAD

It will delete the named reference HEAD, so it will reset (softly, you will not lose your work) all your commits of your current branch.

If what you want is to merge the first commit with the second one, you can use the rebase command:

git rebase -i --root

A last way could be to create an orphan branch, a branch with the same content but without any commit history, and commit your new content on it:

git checkout --orphan <new-branch-name>
查看更多
混吃等死
5楼-- · 2019-01-16 02:28

If you want to keep other branches, but for example make the master branch start anew without common history to other branches, one safe way to achieve this is to create a new repository, and push contents of that in your old one:

cd ..
git init newrepo
cd newrepo
# make some initial commits
git push ../oldrepo master:newmaster

This creates newmaster branch in the old repository, with history that is not common with any of the other branches. Of course, you can just overwrite the master as well, with git push -f.

If you want to destroy all branches and all existing content, then just run

rm -rf .git/
查看更多
聊天终结者
6楼-- · 2019-01-16 02:33

There is nothing before the first commit, as every commit is referring a parent commit. This makes the first commit special (an orphan commit), so there is no way to refer to a previous "state".

So if you want to fix the commit, you can simply git commit --amend: this will modify the commit without creating another one.

If you just want to start all over, delete the .git repository, and make another one with git init

查看更多
smile是对你的礼貌
7楼-- · 2019-01-16 02:33

Another way you can do is:

  1. Checkout to a branch you want to keep (say dev) git checkout dev
  2. Now, delete the branch you want to reset git branch -D master
  3. Now, create an empty branch with the same name git checkout --orphan master

Ofcourse, all of this would depend on your usecase, but if you have more than one branch, deleting the .git directory does not make sense.

查看更多
登录 后发表回答