git - git diff --staged 是否与 git diff --cached HEAD 相同?
问题描述
git diff --staged
一样吗git diff --cached HEAD
?
顺便说一句,git diff --cached
和git diff --cached HEAD
这里一样。
谢谢。
解决方案
For git diff
, --staged
and--cached
是同义词:使用任何你喜欢的。
省略HEAD
通常意味着与 相同的东西HEAD
,因此它们几乎100% 相同,但有一个例外:在尚未提交的新存储库中,可以git diff --staged
正常工作git diff --staged HEAD
但不能:
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
$ git diff --cached
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+test
$ git diff --cached HEAD
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
(这是因为git diff --[cached|staged]
它足够聪明,可以注意到这HEAD
是无效的,并改为与空树进行比较。但是,如果您HEAD
自己输入,git diff
尽职尽责地尝试将其解析为提交哈希 ID,然后失败,产生上述错误。 )
(这个例外也适用于创建孤儿分支时,它在功能上与这个initial-empty-repository状态非常相似:特殊HEAD
文件保存了一个不存在的分支的名称,所以HEAD
它本身只有在被解析为一个分支时才有效名称,而不是在被解析为提交哈希 ID 时。)
推荐阅读
- reactjs - 如何使 react-admin 默认主题 RTL
- c# - 我在 Unity 控制台中收到错误消息。我想知道什么是手段以及如何解决它?
- hyperledger-fabric - 错误:无效的私钥 | Hyperledger Fabric 节点 SDK
- javascript - 如何获得两点折线之间的所有坐标
- r - 从两个数据集中创建唯一列名的组合而不循环
- c# - ElasticSearch 7.x NEST 客户端与 ES 6.x 的兼容性
- java - 当用户在图库中保存新照片时收到通知
- html - 表格的滚动条
- python - Pyglet 无法加载 .wav 文件
- javascript - Socket.io 删除了我的 javascript 对象的一些数据