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:
- How do I make AWS CodeDeploy to use AWS CodeCommit as a Git repo?
- Gitkraken with SSH to Gitlab
- Why various git commands are available only locally?
- rebase reverted merged branch
- Filter git diff by type of change
- Git 1.6.4 beta on Windows (msysgit) - Unix or DOS line termination
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.