Sometimes, especially at the beginning, a Developer makes loads of mistakes and here there are some workaround that can help. 😉
Rewrite master’s history (TO AVOID)
git log --pretty=oneline
git rebase -i --root
=> s/pick/s => choose what to keep ‘pick‘ and what to remove ‘s‘
-> for each ‘pick’ you need to write a summary in the comments
Rewrite history of the current branch (squash)
Firstly, check how many ahead/behind is your branch comparing to the reference one (e.g. master/main)
STEP 1
git rebase -i HEAD~_number of commits_ (e.g.
)git rebase -i HEAD~3
=> use the number of “ahead’s” that you found.
Make the required changes (pick/s) and save.
Then:git push origin +mybranch
STEP 2
git rebase
Any conflicts?
YES -> fix them, git add . , git rebase --continue
NO -> git push +
(forced push using +)
Fix a wrong merge on master
git revert -m
NOTE: merge commit does NOT count.
A -\ K | L | B -/ | ...
Here an example.
You want to go back to commit B (master).
A, B, K, L are commit ID – you can find them using git log
command.
From B to A (A is the last merge that we want to delete), there are 2 commits, K and L.
If you want to go back to B:
git revert -m2 A
which means – go back of 2 commits from A
Happy fixing! 🙂