git - “git checkout - ...”中的 - (单破折号)是什么意思?
问题描述
abc_
在我的存储库中,我有一些想要丢弃的更改(假设所有已编辑文件的路径都以 开头),使用以下命令:
git checkout -- abc_*
但是,我打错了字,而不是两个破折号,我只使用了一个:
git checkout - abc_*
看起来该命令并没有丢弃更改,而是添加了更多要提交的更改 - 实际上,它添加了数百个名称以开头的文件abc_
(但不是所有文件都在项目中!)。
我的问题是:我刚刚做了什么?或者,更准确地说:破折号代表什么?
我能找到的所有答案都解释了两个破折号 (--) 的作用,但我明白这一点。我也相信我了解git checkout
使用分支/树式参数或文件路径的工作原理。但是,我找不到有关单个破折号含义的任何信息 - 破折号也用于指定参数(例如git checkout -b ...
),这使得搜索此命令有问题。
解决方案
这里的单破折号表示先前的活动分支或分离的 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
推荐阅读
- ubuntu - Flask 和 dash 一起使用:在虚拟 ENV 上工作,但不在服务器中
- java - 使用 nio 的路径数组
- node.js - RGB 颜色的 CSS 选择器
- c# - FluentValidation 返回错误时如何返回自定义响应?
- python - 列中的不同值用于并行化 Pyspark 数据帧以随机选择值
- flutter - 颤动中的子树中有多个英雄共享相同的标签
- python - 从一个数据框中绘制多条线并添加辅助轴以绘制不同的数据框 - Pandas
- java - 如何为 Spring/React 应用程序创建 RBAP?
- laravel - '""' 不是内部或外部命令、可运行程序或批处理文件
- haskell - Haskell 将索引列表映射到 !! 操作员