How to remove the first commit in git?

后端 未结 9 1707
深忆病人
深忆病人 2020-12-07 07:20

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?

相关标签:
9条回答
  • 2020-12-07 07:26

    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.

    0 讨论(0)
  • 2020-12-07 07:28

    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.

    0 讨论(0)
  • 2020-12-07 07:30

    I was looking for a way to undo all git commits from a repo, like they never happened.

    Rebasing will work up to a point. However, the very first (chronologically the oldest git commit) is always going to be problematic, since it does not have a parent, so that will error out.

    None of these answers quite solved it for me. But after lots of searching and trial-and-error, I found this to work!

    git update-ref -d HEAD
    git push origin master -f
    

    Hope this helps you. Have a great day.

    0 讨论(0)
  • 2020-12-07 07:30

    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/
    
    0 讨论(0)
  • 2020-12-07 07:40
    # Check out to a temporary branch:
    git checkout --orphan TEMP_BRANCH
    
    # Add all the files:
    git add -A
    
    # Commit the changes:
    git commit -am "Initial commit"
    
    # Delete the old branch:
    git branch -D master
    
    # Rename the temporary branch to master:
    git branch -m master
    
    # Finally, force update to our repository:
    git push -f origin master
    
    0 讨论(0)
  • 2020-12-07 07:46

    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>
    
    0 讨论(0)
提交回复
热议问题