Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么git切换/签出不切换分支?_Git_Git Branch_Git Checkout - Fatal编程技术网

为什么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
命令可以执行多个不同的作业,具体取决于您给它的参数:

  • git checkout master
    将切换到branch
    master

  • git checkout--master
    将从当前分支还原名为
    master
    的文件

到目前为止,这还可以。但是旧的代码> Git CuthOuts< /Cord>命令具有我认为是一个相当大的缺陷。如果您运行:

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
应该可以工作,并且应该切换到分支测试(前提是您处于允许切换的状态,切换会对索引状态施加某些约束)。还要注意名称中的其他非打印字符。例如,如果在创建分支时键入零宽度不间断空格字符作为分支名称的一部分,则在使用它时必须键入相同的零宽度不间断空格字符。