git - 与 git-blame 命令一起使用时双点 (..) 的含义
问题描述
有了一个初始存储库,我创建了一个Test.TXT
文件并用以下内容填充它:
Version 1
Version 1
Version 1
接下来,它被提交:
$ git commit -am Version1
并进行Test.TXT
了一些修改:
Version 1
Version 2
Version 1
$ git commit -am Version2
现在我很想知道自版本 1 以来对文件进行了哪些更改:
$ git log --oneline -- Test.TXT
f315c22 (HEAD -> master) Version2
3b173c2 Version1
$ git blame 3b173c2 .. -- Test.TXT
^3b173c2 (Mergasov 2020-10-06 13:49:50 +0300 1) version 1
^3b173c2 (Mergasov 2020-10-06 13:49:50 +0300 2) version 1
^3b173c2 (Mergasov 2020-10-06 13:49:50 +0300 3) version 1
这种责备的输出让我有些意外。
首先,插入符号 (^) 在这里代表什么?责备文档将其称为边界标记(即,它标记文件的第一次提交)。但是,如果我输入HEAD
(这是 的第二次提交Test.TXT
)而不是3b173c2
,我会再次得到^f315c22
(在每一行中)。
因此,以这种方式使用 git blame 只会导致出现适合所选 SHA1 提交的文件版本,不是吗?它甚至没有显示之前提交的 SHA1(这样的结果可以通过使用不带两个点的责备来实现),也没有显示后续提交(我试图完成)。取而代之的是,我们可以看到键入的 SHA1 版本由插入符号表示。
任何人都可以解释使用此命令(带有双点)的原因是什么?
解决方案
如果您只是执行命令(在 repo 根目录中):
git blame ..
git 会告诉你:
$ git blame ..
fatal: '..' is outside repository
论据:
..
在这种情况下,是对父目录的引用。如果您随后将文件作为参数传递:
git blame .. -- changelog.txt
您会注意到输出具有^abcdbeef
每一行的语法以及您作为提交者的名称(虽然它实际上可能是其他人的文件)。引用之前意味着它无法从您当前的^
分支/引用中访问。
推荐阅读
- javascript - 在不使用按钮的情况下单击时如何更改标签的文本?
- javascript - 单击项目时使用参数运行脚本
- caching - Drupal - 运行这 4 个步骤是否安全
- sql - 编写具有相同条件但不同列并使用聚合函数的查询
- swift - 如何在 swift 上使用 hsplitview
- react-native - 在抽屉导航器中制作自定义抽屉时“超出最大更新深度”
- node.js - Sequelize 内连接无法获得正确的值
- neo4j - 在一个查询中计算关系的最高和最低出现 [Neo4j]
- python - 如何更新 AlexNet 以使用 FCN?对上采样感到困惑
- javascript - 为什么结果不是我所期望的?