问题标签 [git-blame]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 如何在 Git 中获取一组文件的所有作者?
我想从 git blame/bash/awk 大师那里得到一些帮助。我想列出所有的人,他们出现在特定文件组中每个文件的 git blame 中。例子:
- 文件 A 和 B;
- git blame 将 John、Terry 和 Merry 列为 A 中各行的作者;
- git blame 将 Jane 和 Mike 列为 B 中各行的作者;
- 该命令将文件 A 和 B 作为输入文件并返回 Jane、John、Terry、Merry 和 Mike。
所以我的想法是这样的:
- 我在树枝上完成了我的工作;
- 执行该命令,该命令将与 master 相比在此分支上修改的所有文件作为输入,并返回这些文件中行的所有作者的列表。
这个想法是知道要对评论执行 ping 操作。
git - 我怎样才能在特定的一行或多行上 git diff 文件?
是否可以要求git diff
只检查文件中某些行的更改?就像我运行一样git diff some-file
,我会看到很多变化......文件的不同部分,但如果我只想查看与文件的某一特定行相关的差异?还是只有几行?有类似 -L from 的东西git blame
吗?
git - 如何在树中找到所有“活动”的 git 提交?
我想获取目录树的“活动” git 提交的快照,这意味着 git 提交确实是构建的一部分,而不是已被新提交完全取代的提交。
我可以通过git blame
在每个文件上运行并以这种方式提取提交来做到这一点,但是在大型 repo 上它太慢了,不实用。
git - Git责备删除的部分
我需要知道谁以及何时使用 git 删除了源文件的某些部分。不幸的是,似乎 git blame 不会直接告诉我,因为在当前版本的文件中完全没有上述部分。有什么建议么 ?
git - 如何在 git 中继续指责
如果我git blame
在文件上运行,它会列出每行提交,作者修改了特定行。但是我怎么能在这个责备之上责备呢,即我想看看谁在. 中的信息之前更改了这些行git blame
。我怎样才能做到这一点?
git - 与 git-blame 命令一起使用时双点 (..) 的含义
有了一个初始存储库,我创建了一个Test.TXT
文件并用以下内容填充它:
接下来,它被提交:
并进行Test.TXT
了一些修改:
现在我很想知道自版本 1 以来对文件进行了哪些更改:
这种责备的输出让我有些意外。
首先,插入符号 (^) 在这里代表什么?责备文档将其称为边界标记(即,它标记文件的第一次提交)。但是,如果我输入HEAD
(这是 的第二次提交Test.TXT
)而不是3b173c2
,我会再次得到^f315c22
(在每一行中)。
因此,以这种方式使用 git blame 只会导致出现适合所选 SHA1 提交的文件版本,不是吗?它甚至没有显示之前提交的 SHA1(这样的结果可以通过使用不带两个点的责备来实现),也没有显示后续提交(我试图完成)。取而代之的是,我们可以看到键入的 SHA1 版本由插入符号表示。
任何人都可以解释使用此命令(带有双点)的原因是什么?
git - Git记录提交ID和先前日期之间的文件中的特定行?
path/to/file
假设在具有特定 sha 的提交中提交了特定版本中的文件(及其路径) ,我们称之为hex_sha
. 使用后,git blame file/to/path hex_sha
我在该版本中修改了每一行。对于这个例子,我们假设检查带有 number line_i
Supposing to have another prior date的行date_limit
。我如何使用来获取文件中的行已从带有 sha 的修订版修改到特定日期git log
的次数(或提交列表)?line_i
path/to/file
hex_sha
date_limit
我试过:
git log --since=date_limit origin..hex_sha -- -Lline_i,+1:path/to/file
和这个命令的其他不同安排,但没有任何反应,或者 git 错误地理解了文件名。我的印象是,--
在存在目标修订后,git 将第一个参数--
作为文件路径。我确定 date_limit 在考试提交之前。
git - 对 git blame 使用与其他命令相同的提交缩写长度
该git blame
命令显示的提交哈希缩写为比其他命令长一个字符的长度。例如:
我经常从输出中复制粘贴一个缩写哈希,blame
并在日志或交互式 rebase 的提交集中搜索它。但是因为缩写在git blame
输出中长了一个字符,所以我要记得删除最后一个字符,否则搜索什么都找不到。
对于脚本,我会使用未缩写的哈希和瓷器格式。但是对于交互式使用,我想使用缩写哈希。
设置core.abbrev
选项没有帮助:git blame
添加一个。使用一个更少的值设置core.abbrev
和调用blame --abbrev
,但这不是一个好的解决方案,因为我失去了 git 的启发式方法来确定短提交 id 的合适长度,我必须显式传递此选项或使用不同的命令名称作为别名。
我怎样才能使一个简单git blame
的使用与其他 git 命令相同的缩写提交 ID 的长度?