この問題に遭遇したときは、次の手順を実行できます。
- 次のコマンドを実行して、ローカルリポジトリで既知のブランチを一覧表示します。
git remote show origin
これはこれを出力します:
remote origin
Fetch URL: <your_git_path>
Push URL: <your_git_path>
HEAD branch: development
Remote branches:
development tracked
Feature2 tracked
master tracked
refs/remotes/origin/Feature1 stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
Feature2 merges with remote Feature2
development merges with remote development
master merges with remote master
Local refs configured for 'git push':
Feature2 pushes to Feature2 (up to date)
development pushes to development (up to date)
master pushes to master (local out of date)
- (フェッチURLなど)のような詳細を確認した後、このコマンドを実行して、リモートには存在するがローカルには存在しない新しいブランチ(つまり、ローカルリポジトリでチェックアウトしたいブランチ)をフェッチします。
» git remote update
Fetching origin
From gitlab.domain.local:ProjectGroupName/ProjectName
* [new branch] Feature3 -> Feature3
ご覧のとおり、新しいブランチがリモートからフェッチされています。
3.最後に、このコマンドでブランチをチェックアウトします
» git checkout -b Feature3 origin/Feature3
Branch Feature3 set up to track remote branch Feature3 from origin.
Switched to a new branch 'Feature3'
リモートでブランチを追跡する(--trackを使用)ようにGitに明示的に指示する必要はありません。
上記のコマンドは、ローカルブランチを設定して、リモートブランチを起点から追跡します。
origin/master
がコミットIDではない、つまり有効なリモートブランチではないことを示しています。git branch -r
出力に表示されますか?