问题标签 [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.

0 投票
2 回答
6513 浏览

git - Git 提交不会覆盖 git blame 中的原始作者

我使用 perl 脚本修改了 php git 存储库中的所有制表符,并将它们全部更改为 4 个空格。

我可以使用 提交此更改,但在此提交完成后git commit,它会将我标记为内部所有更改行的作者。git blame

有没有什么方法可以提交这个不会将我标记为更改行的作者但保留原作者的巨大更改?这是我们不想在我们的项目中失去的很多历史。

我们用 4 个空格替换制表符的目的不是让 git blame 中的内容看起来不同,而是遵循正确的 PEAR 编码标准。例如,没有制表符,使用 4 个空格进行缩进。

0 投票
5 回答
28580 浏览

git - SourceTree 中的 git-blame 在哪里

我想看看谁贡献了文件的哪一行/更改。git-blame 正是这样做的。那么 SourceTree 有 git-blame 视图吗?

0 投票
3 回答
1486 浏览

git-blame - tig 责备视图:加载父提交后如何返回(子提交)

在责备视图中,我使用“,”来加载父提交的责备。怎么回到孩子身边?

0 投票
1 回答
2012 浏览

git - 查看谁最后更改了 Git 存储库中的特定行

我已经使用git blamegit log file.py查找更改,但是有没有办法查看文件特定行的更改?例如:文件 index.html 的第 84 行。

0 投票
3 回答
3123 浏览

git - 在 Git 中查找第一个存在的代码行

我正在尝试将一段代码(仅一行)跟踪到它的提交。

使用责备只会将我指向一个提交,其中有问题的行作为提取方法样式重构的一部分被移动。

如果代码库中第一次存在特定文本,我可以使用哪些技术来完成提交?

0 投票
2 回答
4113 浏览

git - 选择特定提交后如何返回 :Gblame 的结果?

从 vim 的逃犯插件的 README 中:

:Gblame 使用 git blame 输出进行交互式垂直拆分。在一行上按 enter 以编辑该行更改的提交,或者按 o 在拆分中打开它。

一旦我在特定提交上按下回车键,是否有可能回到责备输出?

0 投票
1 回答
3885 浏览

git - Vim Fugitive: Gblame reblame 选项

我最近一直在使用 Fugitive 的 Gblame,但不太明白“reblame”的作用。

有人可以更清楚地描述这些选项的作用:

0 投票
1 回答
699 浏览

git - 将 `cloc` 与 `git blame` 结合起来

cloc使人们能够计算每种语言每种类型(空白、注释或代码)存储在目录中的代码行数。

git blame使人们能够看到文件的哪一部分属于谁。

我正在寻找一种将两者结合起来的方法,以便获得一个(三维)矩阵,该矩阵列出每个用户每种语言每种类型的代码行。

是否有优雅的内置方法可以做到这一点,或者应该“废弃”每个用户的“责备”部分(通过运行grepafter git blame)并cloc在它们上运行以计算每个用户的表?


编辑

天真的方法(基于@Jubobs 的评论):

  1. 首先为目录中的每个文件生成一个责备文件(不必显式)。
  2. 运行 grepgrep "^[^(]*([^)]*)"以捕获所有用户的列表并使用 和 检索唯一sortuniq
  3. 对于每个用户:生成文件夹的卷影副本并使用 grep 进行 grep,grep "^[^(]*($user)"以便仅保留该用户的行。
  4. 在卷影副本上运行 cloc。
  5. 为每个用户执行此操作,存储结果并将它们一起输出。

这或多或少是如何生成所需的输出。但是正如人们所看到的,这种方法会进行大量复制(或至少存储在内存中),并且实际上可以通过运行文件一次而不是多次来计算每个用户的行数。


期望的输出

就像是:

0 投票
1 回答
84 浏览

git - 使用 GIT 在函数中查找谁和何时删除了一行

我在这样一个巨大的仓库中有一些 ruby​​ 代码

不知何故,随着时间的推移,很少有键值对被删除。我想知道这是git blame谁做的,但是键值对非常常见,以至于grep会导致太多误报。那么有没有办法查看函数对所有提交的更改?

我试过类似的东西git log -L /^\s+def my_func/,/^\s+def/ src/to/file.rb,没有用。像 SourceTree 这样的 GUI 工具有“记录这个文件”,它只显示差异,所以我不知道更改属于哪个函数。我还搜索了stackoverflow并用谷歌搜索了一下,没有找到通用的方法。

0 投票
1 回答
67 浏览

json - 在 package.json 中保留责备

因为无法在 package.json 中的对象或数组的最后一个元素中添加逗号,所以没有保留该行blame;也就是说,如果我在提交 A 的 package.json 中有以下内容:

然后在提交 BI 中添加另一个字段:

git blame package.json显示提交 B 指责的两行。如果我改为在提交 A 中的第一个字段定义的末尾添加一个逗号,则会保留责任:

但这不是有效的 JSON,或者至少 npm 不允许。执行此操作然后运行npm install将引发此错误:

有没有办法绕过 npm 错误?或者有没有一种聪明的方法来使用 git blame 来查看提交 A 真的应该为第一个字段负责?