在我的远程仓库上创建了一个新分支。在我的工作目录(在主分支上(的 GitBash 中,我键入 git remote update
和 git pull
。据我了解git remote update
将更新所有设置为跟踪远程分支的分支,如下所述:"git 远程更新"、"git fetch"和"git pull"有什么区别?
因此,当我键入git diff master newBranch --name-only
时,我希望看到两个分支中不同的文件列表。但相反,我收到了以下错误消息:
致命:模棱两可的参数"newBranch":未知修订或路径不在 工作树。
但是,如果我键入git checkout newBranch
它工作正常,如果我通过键入git checkout master
切换回主控,突然git diff master newBranch --name-only
工作完美?
谁能向我解释这种行为?
正如您提到的,您没有分支"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"的分支,但在结帐后会显示
第一次键入git diff master newBranch --name-only
时,您没有任何本地newBranch
分支。因此,它给出了错误:
致命:模棱两可的参数"newBranch":未知修订版或路径不在工作树中。
稍后,当您通过命令签出到 newBranch 时git checkout newBranch
将创建一个新的本地分支。所以,下次git diff master newBranch --name-only
也在工作。
注意:如果找到,git checkout newBranch
实际上会找到本地newBranch
分支,然后切换到该分支。但是,如果未找到,则在远程分支列表中找到(如果找到(,则创建一个新的本地newBranch
分支跟踪远程newBranch
分支。