为什么git切换/签出不切换分支?
我有两个本地分支,为什么git切换/签出不切换分支?,git,git-branch,git-checkout,Git,Git Branch,Git Checkout,我有两个本地分支,master和test。我想从master切换到test 如果我使用git checkout test,控制台会显示 您的分支机构是最新的“原始/主” 我还在masterbranch 如果我使用git开关测试,控制台会显示 致命:缺少分支或提交参数` 再一次,我仍然在masterbranch 这是怎么回事 我就是这么做的: git签出-b“测试”→ 创建并切换到测试 git签出主机→ 切换到master git校验测试和git开关测试→ 我想切换回测试,但这不起作用 [我跑
master
和test
。我想从master
切换到test
如果我使用git checkout test
,控制台会显示
您的分支机构是最新的“原始/主”
我还在master
branch
如果我使用git开关测试
,控制台会显示
致命:缺少分支或提交参数`
再一次,我仍然在master
branch
这是怎么回事
我就是这么做的:
→ 创建并切换到git签出-b“测试”
测试
→ 切换到git签出主机
master
和git校验测试
→ 我想切换回git开关测试
,但这不起作用测试
git checkout -b 'test'
我不清楚你为什么把test
放在这里的单引号里。如果您的命令行解释器(例如bash)删除了单引号,您就可以了。如果没有(例如,cmd.exe
,显然),您将得到一个分支,其名称字面上是'test'
,,包括单引号字符
要使用该分支名称,您必须继续引用它:
git switch 'test'
因为分支的名称字面上是'test'
,而不是test
一般意见
通常,如果您使用的是Git 2.23或更高版本,请使用新命令(Git-switch
和Git-restore
)而不是旧命令(Git-checkout
)。旧的方法仍然有效,但会产生混乱的行为
特别是,旧的git checkout
命令可以执行多个不同的作业,具体取决于您给它的参数:
将切换到branchgit checkout master
master
将从当前分支还原名为git checkout--master
的文件master
git checkout xyzzy
而且xyzy
不是一个分支名称,git checkout
认为尝试它就像您运行了:
git checkout -- xyzzy
它将xyzy
视为文件(或路径)名称,并尝试从索引中提取xyzy
文件或xyzy/*
文件。因此,如果您没有一个名为test
的分支,但是有一个名为test
的文件,或者有一大堆名称都以test/
开头的文件,git checkout
不会抱怨没有test
分支
使用git开关,您将收到投诉。您不会意外地从git checkout
获得git restore
行为
我想这就是你的情况:你有一个名为
test
的文件或文件夹,还有一个名为'test'
(带单引号)的分支,你让Git还原名为test
的文件,而不是切换到分支,它名为'test'
我使用git checkout-b'test创建了测试分支,之后没有做任何更改。所以答案应该是否定的。它列出了我的本地分支主机和测试,还有一堆远程分支。后来我又切换回master,现在想再次切换回test。但是这不起作用。但是在你的问题中,你想切换到test
分支。我在这里有点困惑,无法通过使用git checkout test
重现您的输出。我编辑了我的问题以使其更清晰,但是如果git banch打印test而不是“test”,如果git branch
列出了名称test
,没有单引号,然后,git-switch-test
应该可以工作,并且应该切换到分支测试(前提是您处于允许切换的状态,切换会对索引状态施加某些约束)。还要注意名称中的其他非打印字符。例如,如果在创建分支时键入零宽度不间断空格字符作为分支名称的一部分,则在使用它时必须键入相同的零宽度不间断空格字符。