git - 我们如何理解 git checkout [点]
问题描述
据我了解,git checkout
是关于移动head
.
例如,git checkout <commit id>
是将head
移至<commit id>
,将git checkout <branch_name>
移至。head
<branch_name>
但是,git checkout .
就是丢弃未分级的更改。好像没什么生意head
。
所以我不明白为什么git
用同一个关键词checkout
来做两件完全不相关的事情。还是git checkout .
基于head
?
解决方案
正如您所注意到的,该checkout
命令被重载以表示两种不同的东西。我认为git help checkout
这很清楚:
git-checkout - Switch branches or restore working tree files
该命令有多种形式,您要询问的一种是:
git checkout [<tree-ish>] [--] <pathspec>...
在您的情况下,省略了<tree-ish>
参数,并且省略--
了分隔选项和文件名的参数,并且<pathspec>
是.
(即当前目录)。该命令的形式记录为:
通过替换索引或
<tree-ish>
(通常是提交)中的内容来覆盖工作树中的路径。
因此,由于您没有指定<tree-ish>
参数,因此文件的内容.
将替换为索引中的内容。这意味着丢弃.
尚未添加到索引中的任何更改。
您可以将其视为“从存储库中签出这些文件”,这可能意味着来自提交,也可能来自索引(可能包含已暂存但尚未提交的更改)。
推荐阅读
- angularjs - 传递数据而不添加到 url
- javascript - Java Script:通过 id 为对象设置值,其中 id 是对象的最后一个字母
- flutter - Flutter Navigation Drawer + 导航底栏怎么用对?
- java - 以优化的方式发出多个相同的http请求
- git - 撤消 git checkout --
- javascript - 在 Node.JS 中使用装饰器的最小工作示例?
- xbee - XBee API 1 和 API 2 模式的区别
- java - org.apache.maven.surefire.booter.SurefireBooterForkException:分叉进程中出现错误
- plist - 如果我们不添加 NSPhotoLibraryAddUsageDescription 来将图像保存到照片库,是否会被 App Store 审核拒绝
- tsql - SQL Server 性能函数 vs 无函数