リモートブランチ(上流ブランチ)が削除されたり、名前が変更されて見つからない場合に表示されます。
前準備
リモートブランチの状態を確認します。$git branch -a -vv
$git branch -avv
- -a オプションはリモートブランチの一覧を表示します。
- -vv オプションは追跡中の上流ブランチを表示します。見つからない場合、[: gone]と表示されます。

【Your branch is based on 'origin/develop', but the upstream is gone.】
$git status
On branch develop
Your branch is based on 'origin/develop', but the upstream is gone.
(use "git branch --unset-upstream" to fixup)
nothing to commit, working tree clean
【remotes に develop ブランチがない】
$git branch -a -vv
develop 87b47c0 [origin/develop: gone] add:test1.txt
master 87b47c0 [origin/master] add:test1.txt
remotes/origin/HEAD -> origin/master
remotes/origin/master 87b47c0 add:test1.txt
解決策1 追跡をやめる
git branch ローカルブランチ名 --unset-upstream
- ローカルブランチ名を省略すると、チェックアウト中ブランチの追跡先が解除されます。
解決策2 追跡先を変更する
git branch ローカルブランチ名 --set-upstream-to origin/ブランチ名
git branch ローカルブランチ名 -u origin/ブランチ名
- ローカルブランチ名を省略すると、チェックアウト中ブランチの追跡先が変更されます。
- 慣例では origin/ブランチ名 ですが、origin の名称は変更できるため、異なる場合があります。
- -u オプションは、--set-upstream-to の省略形です。
解決策3 push
git push -u origin ローカルブランチ名:リモートブランチ名
- 慣例では origin ブランチ名 ですが、origin の名称は変更できるため、異なる場合があります。
検証環境
- git version 2.25.1.windows.1
- Microsoft Windows 10 Pro Version 1909 OS Build 18363.657