【问题标题】:git branch unkown but checkout worksgit分支未知但结帐有效
【发布时间】:2017-11-25 12:24:06
【问题描述】:
在我的远程存储库上创建了一个新分支。在我的工作目录(在主分支上)的 GitBash 中,我输入 git remote update 和 git pull。据我了解,git remote update 将更新所有设置为跟踪远程分支的分支,如下所述:
What is the difference between 'git remote update', 'git fetch' and 'git pull'?
所以当我输入git diff master newBranch --name-only 时,我希望看到两个分支中不同的文件列表。但相反,我收到以下错误消息:
致命:模棱两可的参数“newBranch”:未知的修订版或路径不在
工作树。
但是如果我输入 git checkout newBranch 效果很好,如果我通过输入 git checkout master 切换回 master 突然 git diff master newBranch --name-only 效果很好?
谁能向我解释这种行为?
【问题讨论】:
标签:
git
version-control
git-remote
【解决方案1】:
当您第一次输入git diff master newBranch --name-only 时,您没有任何本地newBranch 分支。所以,它给出了错误:
致命:不明确的参数“newBranch”:未知修订版或路径不在工作树中。
稍后当您通过git checkout newBranch 命令签出 newBranch 时,会创建一个新的本地分支。所以,下次git diff master newBranch --name-only 也能正常工作。
注意: git checkout newBranch 实际上找到了一个本地的newBranch 分支,如果找到则切换到该分支。但如果未找到,则在远程分支列表中找到,如果找到则创建一个新的本地 newBranch 分支,跟踪远程 newBranch 分支。
【解决方案2】:
正如您所提到的,您没有分支“newBranch”的本地副本,因此您需要指定要使用远程分支标记进行差异,如下所示:
git diff origin/master origin/newBranch --name-only
或假设您在本地拥有主人:
git diff master origin/newBranch --name-only
检查您在本地拥有哪些分支机构:
git branch -l
或
git branch
检查远程分支
git branch -r
检查所有分支:
git branch -a
所以这在您进行结帐后对您有用,因为 git 自动创建了一个名为 newBranch 的本地分支。因此,在您结帐之前git branch 不会显示名为“newBranch”的分支,但在结帐之后会显示。