Hi. TL;DR; Some local commits are lost while `git pull -v --rebase` [alias] tree = log --graph --decorate --pretty=oneline --abbrev-commit changes = log --graph --decorate --pretty=oneline --abbrev-commit --cherry-pick --boundary --left-right <HERE I do some work, commit it and push> <after some time> $ git fetch origin remote: Counting objects: 806, done. remote: Compressing objects: 100% (197/197), done. remote: Total 806 (delta 587), reused 806 (delta 587) Receiving objects: 100% (806/806), 85.96 KiB | 0 bytes/s, done. Resolving deltas: 100% (587/587), completed with 19 local objects. >From https://tracker.feel-safe.net/gitdev/main + a562406d...f9015227 296_tos -> origin/296_tos (forced update) Here we see that someone did 'forced update' $ git tree -n 5 * a562406d (HEAD -> 296_tos, back) Bulk changes ### <<< PUT ATTENTION HERE * 177e2515 Bulk changes * 934bbb31 Fix Profile Page * 811d8812 Fix button's width on Authorization form * 97ca9419 Fix Tariff Options page Here git know that a562406d already pushed to remote Now I want to update my branch $ git pull -v --rebase >From https://tracker.feel-safe.net/gitdev/main = [up to date] 296_tos -> origin/296_tos .... = [up to date] text-page-style -> origin/text-page-style Changes from f66c29158a57d687aaf48fb89f9b897563c0142e to f9015227da20ad1f858174b4b4c188338eb26640: cpanfile | 4 + .... templates/v2/tos/tos.html.ep | 4 +- 31 files changed, 1694 insertions(+), 106 deletions(-) create mode 100644 lib/DbMapper.pm .... create mode 100644 t/DbMapper/update_data.t First, rewinding head to replay your work on top of it... $ git tree -n 5 * f9015227 (HEAD -> 296_tos, origin/296_tos) Bulk changes * 95064421 Fix Profile Page * c03c930a Fix button's width on Authorization form * e6df0662 Fix Tariff Options page * 22b5c754 Fix header on order page $ diff <(git show f901522) <(git show 177e2515) 1c1 < commit f9015227da20ad1f858174b4b4c188338eb26640 --- > commit 177e2515eb2bc1c9733b4374f2da373aa969a601 $ git changes a562406d...f9015227 > 50e9343a Merge branch 'orm' into dash_v2 |\ | > 4be5e3c6 Test data fetching from DataSet | > 11d60181 More tests: Manual condition OP for join expression .... | < a562406d (back) Bulk changes o f66c2915 (origin/dash_v2, dash_v2) Merge branch 'move_example_elements' into dash_v2 We can see that a562406d after rebasing **is lost** Why a562406d is not applied on top of remote branch? PS. for `git push --force` there is alternative: --force-with-lease Is there something similar to --force-with-lease but for `git pull -v --rebase`?