小能豆

How do I undo the most recent local commits in Git?

javascript

I accidentally committed the wrong files to Git, but didn’t push the commit to the server yet.

How do I undo those commits from the local repository?


阅读 322

收藏
2024-01-01

共1个答案

小能豆

If you’ve committed changes locally but haven’t pushed them to the remote repository yet, you can use the git reset or git revert commands to undo those commits. The appropriate command to use depends on your specific needs:

1. Using git reset (Use with caution, as it rewrites history):

If you want to completely remove the commits and undo them, you can use git reset:

# This will remove the last commit (replace N with the number of commits to remove)
git reset --hard HEAD~N

Replace N with the number of commits you want to undo. Be careful when using git reset --hard as it discards all changes in your working directory associated with those commits.

2. Using git revert (Safe for shared branches, as it creates new commit to undo changes):

If you want to keep a record of the changes but undo them, you can use git revert:

# This will create a new commit that undoes the last commit (replace N with the number of commits to revert)
git revert HEAD~N..HEAD

Again, replace N with the number of commits you want to revert.

Choose the method that best fits your situation. If you haven’t shared the commits with others, using git reset might be more straightforward. However, if others have already seen your commits, or if you’re working on a shared branch, using git revert is generally safer, as it doesn’t rewrite history but instead creates new commits that undo the changes.

After using either of these commands, you can use git push to update the remote repository with your changes:

git push origin <branch-name>

Replace <branch-name> with the name of your branch. Note that you might need to force-push (git push -f) if you used git reset --hard. Be cautious with force-push as it can overwrite history in the remote repository.

2024-01-01