在我的远程存储库上创建了一个新分支。在我的工作目录中的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
突然git diff master newBranch --name-only
输入PrintingFactory
切换回主人,那就完美了吗?
有人可以向我解释这种行为吗?
答案 0 :(得分: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
分支。
答案 1 :(得分:1)
正如您所提到的,您没有分支“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”的分支,但在结账后它会显示。