Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

How to revert main branch to an earlier commit in git?

+7
−0

How to move the main branch back to an earlier commit in git?

History
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

0 comment threads

2 answers

+7
−0

With git reset, but first, you may want to save the current state in another branch:

$ git switch main
$ git branch backup-of-main

Now the (perhaps messed up) state is safely stored in branch backup-of-main, and you can always just switch back to it and have another swing.

To move main to an earlier commit:

$ git switch main
$ git reset --hard <commit-hash>

You might still run into issues when pushing main to a remote that has already seen the more futuristic states. In this case, you need to force push:

$ git push --force

When you are absolutely sure that it worked out as you planned, you may consider removing the backup-of-main branch. See this question for how.

History
Why does this post require moderator attention?
You might want to add some details to your flag.

2 comment threads

Actually, this solution is not restricted to `main`, as it works for any branch. Regarding `push -... (7 comments)
Did you mean to add a footnote? I see `[1]` but no referent. Maybe you meant to add something about... (3 comments)
+3
−0

For another perspective, I use TortoiseGit (https://tortoisegit.org/) on Windows a fair bit:

  1. Checkout the branch.

  2. Open the log window (Git Show log).

  3. Right-click on the commit/branch that you want to reset to, and choose Reset...:

    A view of a Log Messages TortoiseGit window with master checked out, and a context menu shown on an earlier/lower commit, with the Reset menu item highighted.

  4. In that dialog, you can choose soft, hard, or mixed reset. I usually pick hard.

    An example TortoiseGit Reset dialog, with Reset Type set to Mixed.

  5. Once done, pushing may be troublesome like lizuki said, but if no one else has pushed that branch in the meantime, I like to push with the "force with lease" option checked. With it checked, you can only push if there are no new (as in, from other people) commits on the branch on the remote. But if you need to force it, just coordinate with others working off that branch.

    An example TortoiseGit Push dialog, with the "force with lease" option selected and highlighted.

History
Why does this post require moderator attention?
You might want to add some details to your flag.

1 comment thread

Force pushing with lease is a good addition (1 comment)

Sign up to answer this question »