How do I recover from a commit –amend if I already pushed the original commit?
Scenario: I commit, push to the remote server, and then commit something else with –amend. If I try to push again, I’ll get an error because I changed history that was already pushed.
- Lets say I don’t care about the amended changes, how do I undo this so my history looks like the remote history (discard the –amend changes)?
Lets say I do care about the amended changes, how do I turn the amended commit into a stand alone commit so history looks like this:
- Default filters in SourceTree history
- Is there a bi-directional bridge between p4 and git?
- Can I work with Git command line if I've checked a project out using Eclipse's EGit?
- How can i make ZSH use the latest git version?
- Squash all commits in branch in git
- git request-pull from local branch to remote master
commit 1 <- commit 2 (already pushed to server) <- (originally from amended commit)
I’m trying to avoid having to use a
This is a very similar question but there is a key difference: In that question, he hasn’t pushed commit 1 to a remote repo yet. In my question, I have.
One Solution collect form web for “How do I recover from a commit –amend if I already pushed the original commit?”
I’ll assume your remote is called
origin, and your branch is called
master. Adjust as needed.
Lets say I don’t care about the amended changes
Then you can use
git reset --hard origin/master. This sets your current branch to exactly what is on the remote, and updates your index and worktree to match.
Lets say I do care about the amended changes
Then you can use
git reset --soft origin/master. This sets your current branch to exactly what is on the remote, but does not update your index or worktree to match. You can then use
git commit to create a new commit containing your added changes.