我有时使用checkout -b
选项创建一个新分支,同时检查它并在一个命令中设置跟踪。
在新环境中,我收到此错误:
$ git checkout -b test --track origin/master
fatal: Cannot update paths and switch to branch 'test' at the same time.
Did you intend to checkout 'origin/master' which can not be resolved as commit?
为什么Git不喜欢它?这曾经使用相同的仓库。
答案 0 :(得分:183)
'
origin/master
'无法解析为提交
奇怪:你需要检查你的遥控器:
git remote -v
并确保获取origin
:
git fetch origin
然后:
git branch -avv
(看看你是否确实提取了origin/master
分支)
答案 1 :(得分:70)
FWIW:如果你的分支机构中有拼写错误,你会得到同样的错误。
答案 2 :(得分:50)
您可以在以下情况下获得此错误: Travis构建,默认情况下,使用git clone --depth=50 --branch=master
检查代码。据我所知,您可以通过--depth
而不是.travis.yml
来控制--branch
。由于这会导致遥控器仅跟踪一个分支,因此您需要独立更新遥控器以跟踪所需的遥控器参考。
在:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
修复:
$ git remote set-branches --add origin branch-1
$ git remote set-branches --add origin branch-2
$ git fetch
后:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/branch-1
remotes/origin/branch-2
remotes/origin/master
答案 3 :(得分:18)
这个简单的事对我有用!
如果它说不能同时做两件事,请将它们分开。
git branch branch_name origin/branch_name
git checkout branch_name
答案 4 :(得分:9)
当您偶然发现此问题时,您可以按照以下步骤操作:
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)
» 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'
没有必要明确告诉Git使用远程跟踪(使用 - track )分支。
上述命令将设置本地分支以跟踪来自原点的远程分支。
答案 5 :(得分:1)
对我来说,我需要添加遥控器:
git remote -add myRemoteName('origin' in your case) remoteGitURL
然后我可以获取
git fetch myRemoteName
答案 6 :(得分:1)
它导致您的本地分支不跟踪远程分支。 正如ssasi所说,你需要使用这些命令:
git remote update
git fetch
git checkout -b branch_nameA origin/branch_nameB
我刚刚解决了我的问题......
答案 7 :(得分:1)
如果分支中有空格,则会出现此错误。
答案 8 :(得分:0)
首先你需要Fetch
远程(特定分支),然后你可以使用你的命令创建一个本地br并使用该远程分支跟踪它(即checkout
和-b和 - 轨道)。
答案 9 :(得分:0)
你应该去子模块目录并运行git reset .
。
您可能会看到很多文件已被删除。你可以运行
git checkout .
git fetch -p
git rm --cached submodules
git submoudle add ....
// submoudles是您的名字
foo="uNcapItalizedstrIng"
echo $foo | awk '{print toupper(substr($0,0,1))tolower(substr($0,2))}'
答案 10 :(得分:0)
您可以使用以下命令: git远程更新, git fetch, git checkout -b branch_nameA origin:branch_nameB
我想也许是因为你的本地分支无法跟踪远程分支
答案 11 :(得分:0)
就我而言,我必须使用以下命令使用远程存储库中的最新标签更新我的 locate git 存储库:
git fetch --tags
获取远程存储库标签的命令可能因您组织的 Git 设置而异。
执行此操作后,git checkout
起作用了。