“不能更新path并同时切换到分支”

我有时使用checkout -b选项来创build一个新的分支,同时检查它并设置一个命令的跟踪。

在新的环境中,我得到这个错误:

 $ 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不喜欢它? 这用于使用相同的回购。

' origin/master '不能被parsing为提交

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

 git remote -v 

并确保origin被提取:

 git fetch origin 

然后:

 git branch -avv 

(看看你是否已经取得了一个origin/master分支)

FWIW:如果你在branchname中有一个错字,你会得到同样的错误。

你可以在上下文中得到这个错误,例如一个Travis版本,默认情况下,用git clone --depth=50 --branch=master检查代码。 据我所知,你可以通过.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 

当您遇到这个问题时,您可以按照以下步骤操作:

  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. 在validation详细信息(获取URL等)后,运行此命令以获取远程存在但不在本地的任何新分支(即,您可能希望在本地回购中签出的分支)。
 » git remote update Fetching origin From gitlab.domain.local:ProjectGroupName/ProjectName * [new branch] Feature3 -> Feature3 

正如你所看到的,新的分支已经从远程获取。
最后,用这个命令检查分支

 » 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 )分支与远程。

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

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

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

然后我可以取

 git fetch myRemoteName 

首先,您需要Fetch远程(特定分支),然后您可以创build一个本地br并使用您的命令跟踪该远程分支(即使用-b和–track checkout )。

你应该去子模块目录并运行git status

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

  1. git reset .

  2. git checkout .

  3. git fetch -p

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

  5. git submoudle add ....