Звучит так, как будто ваша ветка разработчика изначально была основана на origin/master
вместо origin/dev
, или каким-то образом dev
был изменен для отслеживания origin/master
в любом случае. Вы можете проверить это с помощью:
git config branch.dev.merge
Если это говорит refs/heads/master
вместо refs/heads/dev
, вы можете изменить восходящую ветку для вашей dev
ветви с помощью:
git checkout dev
git branch --set-upstream dev origin/dev
Тогда, чтобы исправить вашу ветку, я бы:
- Убедитесь, что вы находитесь на ветке
dev
с git checkout dev
- Убедитесь, что
git status
чистый
- Создать ветку, чтобы сохранить, где вы были (для безопасности):
git branch dev-wrongly-rebased
- Используйте
git reflog
, чтобы найти коммит до того, как вы перейдете на origin/master
- Сброс
dev
до этой точки git reset --hard COMMIT-BEFORE-BAD-REBASE
- Наконец, сделайте
git rebase origin/dev
При перебазировании я предпочитаю всегда делать это в два шага, например ::1010
git fetch origin
git rebase origin/dev
... так как я думаю, что это менее подвержено ошибкам, чем git pull --rebase
. Надеюсь, это пригодится.