# 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
#