首页 > 解决方案 > “git checkout - ...”中的 - (单破折号)是什么意思?

问题描述

abc_在我的存储库中,我有一些想要丢弃的更改(假设所有已编辑文件的路径都以 开头),使用以下命令:

git checkout -- abc_*

但是,我打错了字,而不是两个破折号,我只使用了一个:

git checkout - abc_*

看起来该命令并没有丢弃更改,而是添加了更多要提交的更改 - 实际上,它添加了数百个名称以开头的文件abc_(但不是所有文件都在项目中!)。

我的问题是:我刚刚做了什么?或者,更准确地说:破折号代表什么?

我能找到的所有答案都解释了两个破折号 (--) 的作用,但我明白这一点。我也相信我了解git checkout使用分支/树式参数或文件路径的工作原理。但是,我找不到有关单个破折号含义的任何信息 - 破折号也用于指定参数(例如git checkout -b ...),这使得搜索此命令有问题。

标签: git

解决方案


这里的单破折号表示先前的活动分支或分离的 HEAD。

情况1:

git checkout master
git checkout dev

# here - means master
git checkout -

# here - means dev
git checkout -

案例二:

# detached HEAD
git checkout refs/heads/master
# back to master
git checkout master

# detached HEAD again
git checkout -

# master again
git checkout -

所以git checkout - abc_*意味着通过替换为先前活动分支或分离的 HEAD 中的内容来覆盖工作树中的路径 (abc_*)。见git checkout


推荐阅读