How can I efficiently undo multiple recent commits in Git without losing changes? - Stack Overflow

I'm working on a project using Git, and I've realized that the last few commits contain error

I'm working on a project using Git, and I've realized that the last few commits contain errors that I need to correct. I want to undo these commits but keep the changes in my working directory so I can fix them before committing again.

What is the best way to achieve this without losing any of my work? Also, how would this process differ if the commits have already been pushed to a remote repository?

Any advice on best practices for handling this situation would be greatly appreciated!

I'm working on a project using Git, and I've realized that the last few commits contain errors that I need to correct. I want to undo these commits but keep the changes in my working directory so I can fix them before committing again.

What is the best way to achieve this without losing any of my work? Also, how would this process differ if the commits have already been pushed to a remote repository?

Any advice on best practices for handling this situation would be greatly appreciated!

Share Improve this question asked Nov 21, 2024 at 3:48 Ritik Raj ThakurRitik Raj Thakur 11 bronze badge 1
  • Look up interactive rebase. – Tim Biegeleisen Commented Nov 21, 2024 at 7:30
Add a comment  | 

2 Answers 2

Reset to default 1

What is the best way to achieve this without losing any of my work? Also, how would this process differ if the commits have already been pushed to a remote repository?

If the commits have not been pushed to a remote repository, you can use git reset. For example, to discard the last four commits without making any changes in your working directory:

git reset HEAD~4

You can also git reset to a specific commit:

git reset <commit_hash>

After this command, all the modifications from those commits will remain as unstaged changes.


If the commits have already been pushed to a remote repository, you have some choices to make. You could follow the same process as above and then force push (git push --force-with-lease) to the remote repository, but the impact of this can be problematic if other people are working with the same repository. If you're working in your own feature branch that you have not yet submitted as a pull request, this may be a fine option.

Otherwise, your best option is probably to accept that those commits are going to be there forever. In this case, the best option is simply to create new commit with the necessary corrections, and push that to the remote repository just like any other set of changes.


As always, if you are unsure that a command you've been given will have the intended impact, consider experimenting on a test branch or in a copy of your local directory.

Use git reset to undo the commits but keep the changes in your working directory

git reset HEAD~n

Make the necessary corrections to the files. Once you're satisfied, stage and commit the changes

git add .
git commit -m "Corrected commit message or content"

Rewrite the remote history to match your local branch

git push --force

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742315125a4420683.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信