“不能同时更新路径和切换到分支”;

我有时使用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不喜欢它?这在相同的回购中是有效的。

169052 次浏览

` origin/master'不能解析为提交

奇怪:你需要检查你的遥控器:

git remote -v

并确保获取origin:

git fetch origin

然后:

git branch -avv

(看看你是否已经获取了origin/master分支)

最后,在Git 2.23+(2019年8月)中使用git switch而不是困惑git checkout

git switch -c test --track origin/master

如果你的分支名称有一个拼写错误,你会得到同样的错误。

你可以在上下文中得到这个错误,例如,默认情况下,用git clone --depth=50 --branch=master检出代码的Travis构建。据我所知,你可以通过.travis.yml控制--depth,但不能通过--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

这个简单的方法对我很管用!

如果它说不能同时做两件事,那就把它们分开。

git branch branch_name origin/branch_name


git checkout branch_name

对我来说,我需要添加遥控器:

git remote -add myRemoteName('origin' in your case) remoteGitURL

然后我就能拿到

git fetch myRemoteName

首先你需要Fetch远程(特定的分支),然后你可以创建一个本地br并使用你的命令(即checkout带-b和——track)跟踪它与远程分支。

当您偶然发现这个问题时,您可以执行以下步骤:

  1. 运行以下命令列出本地存储库已知的分支。

Git远程显示来源

输出如下:

 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)
  1. 在验证了诸如(获取URL等)之类的详细信息之后,运行这个命令来获取任何新的分支(例如:你可能想签出在你的本地回购),存在于远程,但不在你的本地。
» git remote update


Fetching origin
From gitlab.domain.local:ProjectGroupName/ProjectName
* [new branch]      Feature3    -> Feature3

正如你所看到的,新的分支已经从remote获取。< br > 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跟踪(使用——跟踪)带有remote的分支。

上面的命令将设置本地分支从原点跟踪远程分支。

你应该进入子模块dir并运行git status

你可能会看到很多文件被删除。你可以跑

  1. git reset .

  2. git checkout .

  3. git fetch -p

  4. git rm --cached submodules //submoudles是你的名字

  5. git submoudle add ....

您可以使用以下命令: Git远程更新, git取回, git checkout -b branch_nama origin: branch_namb

. bat

我想可能是因为你的本地分支无法跟踪远程分支

它导致你的本地分支不跟踪远程分支。 正如ssasi所说,你需要使用这些命令:

git remote update
git fetch
git checkout -b branch_nameA origin/branch_nameB

我刚才解决了问题....

如果分支中有空白,则会得到这个错误。

在我的情况下,我必须更新我的本地git存储库的最新标签从远程存储库使用以下命令:

git fetch --tags

获取远程存储库标记的命令可能因组织的Git设置而异。

这样做之后,git checkout工作了。

首先你需要检查你的遥控器:它应该是*master

git pull (up-to-date)
git checkout -b branch-name (branch name without any spaces)
git status
git add .
git commit -m "comments goes here"
git push branch-name

当我点击这一行从我的远程分支创建一个新分支时,我也遇到了同样的问题:

git checkout -b newbranch origin/ remotebranch

要解决这个问题,你可以先更新你的本地存储库:

fetch --all

然后再次正确输入命令:

git checkout -b newbranch origin/remotebranch

请确保拼写正确,不要在origin/和remotebranch之间放空格。这些步骤帮助我解决了我的问题。

在我的例子中,我不小心在我的分支名称中有一个空格:

git checkout -b my-branch-name-with a-space
▲
accidental space ──────────┘

处理好空间问题。