Knowledge Base
Authentication is disabled (development mode).

git delete commit already pushed

Edit

branch cherry cherry-pick commit delete git origin push pushed rebase remote remove

# Create repository "delete-commit" on GitHub

cd /tmp/
mkdir delete-commit

cd delete-commit
git init

:> README.md
git add README.md
git commit -m "good commit" # aaaaaaaa

echo bad > README.md
git add README.md
git commit -m "bad commit" # bbbbbbbb

echo fixed > README.md
git add README.md
git commit -m "good commit" # cccccccc

git branch -M main
git remote add origin git@github.com:flederwiesel/delete-commit.git
git push -u origin main

cd ..

rm -rf delete-commit

#
# Before:
#   aaaaaaaa -> (bbbbbbbb) -> cccccccc
#

git clone git@github.com:flederwiesel/delete-commit.git
cd delete-commit

git checkout aaaaaaaa
git checkout -b feature-fix
git cherry-pick cccccccc
# resolve conflicts
sed -i '/<<<<<<</,/=======/d; />>>>>>>/d' README.md
git add README.md
git cherry-pick --continue # CCCCCCCC
# conflicts resolved
#git push --force-with-lease origin CCCCCCCC:refs/heads/main
git push --force-with-lease origin $(git log -1 --format=%h):refs/heads/main

# Pull changes into main
git checkout main
git branch -D feature-fix
git rebase -i origin/main # Will complain about empty commit -> skip
# select "drop" for bad commit
git rebase --skip

#
# After:
#   aaaaaaaa ->               CCCCCCCC
#