I sometimes use the checkout -b
option to create a new branch, check it out at the same time and set up tracking in one command.
In a new environment, I
You can use these commands: git remote update, git fetch, git checkout -b branch_nameA origin:branch_nameB
I think maybe it's because of your local branch can not track remote branch
You should go the submodule dir and run git status
.
You may see a lot of files were deleted. You may run
git reset .
git checkout .
git fetch -p
git rm --cached submodules
//submoudles is your name
git submoudle add ....
'
origin/master
' which can not be resolved as commit
Strange: you need to check your remotes:
git remote -v
And make sure origin
is fetched:
git fetch origin
Then:
git branch -avv
(to see if you do have fetched an origin/master
branch)
Finally, use git switch instead of the confusing git checkout, with Git 2.23+ (August 2019).
git switch -c test --track origin/master
You could follow these steps when you stumble upon this issue:
git remote show origin
which outputs this:
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)
» git remote update Fetching origin From gitlab.domain.local:ProjectGroupName/ProjectName * [new branch] Feature3 -> Feature3
As you can see the new branch has been fetched from remote.
3. Finally, checkout the branch with this command
» git checkout -b Feature3 origin/Feature3 Branch Feature3 set up to track remote branch Feature3 from origin. Switched to a new branch 'Feature3'
It is not necessary to explicitly tell Git to track(using --track) the branch with remote.
The above command will set the local branch to track the remote branch from origin.
You can get this error in the context of, e.g. a Travis build that, by default, checks code out with git clone --depth=50 --branch=master
. To the best of my knowledge, you can control --depth
via .travis.yml
but not the --branch
. Since that results in only a single branch being tracked by the remote, you need to independently update the remote to track the desired remote's refs.
Before:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
The fix:
$ git remote set-branches --add origin branch-1
$ git remote set-branches --add origin branch-2
$ git fetch
After:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/branch-1
remotes/origin/branch-2
remotes/origin/master