-
Notifications
You must be signed in to change notification settings - Fork 280
Description
After I rewrite and force-push to a remote, I can no longer git subrepo pull --method rebase to rebase my local branch on the new remote branch.
> git subrepo pull --method rebase 3rdparty/rtaudio
git-subrepo: Local repository does not contain 72d703e77db60c9faf31a5b78ddb272d08401065. Try to 'git subrepo fetch 3rdparty/rtaudio' or add the '-F' flag to always fetch the latest content.
> git subrepo branch 3rdparty/rtaudio/
git-subrepo: Local repository does not contain 72d703e77db60c9faf31a5b78ddb272d08401065. Try to 'git subrepo fetch 3rdparty/rtaudio' or add the '-F' flag to always fetch the latest content.
72d703e77db60c9faf31a5b78ddb272d08401065 is the latest remote commit seen from a prior fetch/pull. However I have rebased the rtaudio repository on upstream and force-pushed to the remote, removing 72d703e from the master branch. Now git subrepo pull fails, even though a regular git pull --rebase is perfectly capable of rebasing onto a force-pushed remote.
git subrepo pull --force [--method rebase] 3rdparty/rtaudio works (--method rebase is ignored), but discards all changes I made locally but haven't run git subrepo push on. If I've made the changes recently and haven't pushed them to master, I have to checkout a commit from before the changes, then cherry-pick the commits after running git subrepo pull --force. If I've already pushed the commits and don't want to force-push my local repo, git subrepo pull --force forces me to lose the changes in the process (I can try to reapply them afterwards).
Currently using git subrepo 0.4.3 (latest release, basically latest commit).