标签: git-blame

git责备怎么办?

我看到很多关于使用方法的问题,git blame但我并不真正了解它们.

blame在github界面上的文件顶部看到一个按钮.单击它后,它会在左侧栏上显示一些带有用户名的差异.这表明了什么?

除了GitHub之外,为什么实际使用git blame?

git git-blame

252
推荐指数
6
解决办法
14万
查看次数

SourceTree中的git-blame在哪里?

我想看看谁为文件贡献了哪一行/更改.git-blame正是如此.那么SourceTree有一个git-blame视图?

git blame git-gui atlassian-sourcetree git-blame

64
推荐指数
3
解决办法
2万
查看次数

为什么git blame不遵循重命名?

$ pwd
/data/mdi2/classes

$ git blame -L22,+1 -- utils.js
99b7a802 mdi2/utils.js (user 2015-03-26 21:54:57 +0200 22)  #comment

$ git blame -L22,+1 99b7a802^ -- utils.js
fatal: no such path mdi2/classes/utils.js in 99b7a802^
Run Code Online (Sandbox Code Playgroud)

您已经注意到,该文件位于该提交的不同目录中

$ git blame -L22,+1 99b7a802^ -- ../utils.js
c5105267 (user 2007-04-10 08:00:20 +0000 22)    #comment 2
Run Code Online (Sandbox Code Playgroud)

尽管如此

The origin of lines is automatically followed across whole-file renames (currently there is no option to turn
       the rename-following off)
Run Code Online (Sandbox Code Playgroud)

责备不遵循重命名.为什么?

更新:简答

git blame 按照重命名但不是 git blame COMMIT^ -- <filename>

但是,通过批量重命名和大量历史记录手动跟踪文件重命名太难了.我认为,必须修复此行为以静默跟随重命名 …

git blame git-blame

41
推荐指数
1
解决办法
6723
查看次数

如何在 PyCharm 中禁用用户名注释

我不确定这是一个更新还是我启用了一个设置,但我看到我的代码用与代码内联的 git Blame 用户名进行了注释。

git Blame 操作表示它已关闭。

当我单击用户名时,包含行号的列将展开并显示时间戳。

如何禁止用户名出现?

内联用户名

点击后

点击后

annotations pycharm git-blame

32
推荐指数
2
解决办法
5848
查看次数

git Blame 带有可选的ignorevsfile

我有大约 40 个 git 存储库,其中大多数都有一个.git-blame-ignore-revs用于与git blame. blame.ignorerevsfile=.git-blame-ignore-revs因此,我没有使用 本地配置,而是将其应用到我的全局git 配置中。

但是,少数没有此类文件的存储库会受到它的影响:git blame在它们上运行会导致fatal: could not open object name list: .git-blame-ignore-revs.

有没有办法告诉 git 读取此类文件(如果存在),否则忽略它?这将是理想的:设置简单,但如果不存在这样的文件也不引人注目。

注意:拥有可选 文件很有用的另一个原因.git-blame-ignore-revs是,几乎所有 git 存储库都是在没有这样的文件的情况下创建的,只有在稍后才会添加它。然而,当二分旧的提交时,我们最终可能会返回到文件存在之前的touch某个点,然后我们必须完成二分,然后再次删除它才能返回到 HEAD 提交。即使我对文件使用本地配置,这种极其烦人的情况仍然会发生。出于这个原因,我确实认为默认行为应该是忽略该文件(如果它不存在)。

git git-blame

30
推荐指数
1
解决办法
7187
查看次数

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

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

$ find -iname \*.php -exec perl -pi -e "s/\t/    /g" {} \
Run Code Online (Sandbox Code Playgroud)

我可以提交这个更改git commit,但它会在我提交之后将我标记为内部所有更改行的作者git blame.

有没有办法实现这个大规模的改变,不会让我成为改变行的作者,但保留原作者?这是我们在项目中并不想丢失的很多历史.

我们用4个空格替换制表符的目的不是为了使git责备中的东西看起来不同,而是遵循适当的PEAR编码标准.例如没有标签,使用4个空格进行缩进.

git git-commit git-blame

24
推荐指数
2
解决办法
4840
查看次数

如何在android studio中了解开发人员代码责任

我正在研究由少数开发人员共享的项目,如何在android studio中了解开发人员的责任?任何捷径或任何想法?这将有助于我们了解代码责任.

android blame git-blame

24
推荐指数
1
解决办法
5813
查看次数

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

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

git blame 使人能够看到文件的哪个部分属于谁.

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

是否有优雅内置的方式来做到这一点还是应该一个"报废"的"怪"的部分(运行grepgit blame)每个用户的,并运行cloc它们来计算表中的每个用户?


编辑:

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

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

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


期望的输出:

就像是:

+--------+--------------------------------+--------------------------------+
|User    | C#                             | XML                            |
+--------+-------+-------+---------+------+-------+-------+---------+------+
|        | files | blank | comment | code | files | blank | comment | code |
+--------+-------+-------+---------+------+-------+-------+---------+------+
| Foo    |    12 |    75 |     148 | 2711 |     2 |    42 |       0 | …
Run Code Online (Sandbox Code Playgroud)

git blame cloc git-blame

18
推荐指数
1
解决办法
519
查看次数

如何使用Xcode 11欺骗Blame /作者以前的版本?

使用Xcode 10.2,我可以选择“作者”视图,然后从底部选择器中选择一个先前的 git修订版本: 选择器可用

但是对于Xcode 11 beta,当我选择“作者”视图时,由于缺少选择器,我无法选择一个过时的修订版本: 选择器丢失

该功能是否已删除,或者是否有新的步骤要责备以前的修订的代码行?为了进一步说明,我想在Xcode 11中看到过去的责备,就像GitHub 责备特定的先前修订版一样

xcode git-blame xcode11

18
推荐指数
5
解决办法
3771
查看次数

为什么 Annotate(blame) 的用户名与 IntelliJ IDEA 中提交的作者不同?

当我在 IntelliJ IDEA 中使用 git annotate 时,某些行的作者用户名与此提交的作者姓名不同,如下图:

错误的作者

正如你所看到的,fan.qpQp不一样,为什么会这样呢?

当我使用 bash 或 SourceTree 运行时git blame,两个名称是相同的。
这是IDEA的错误吗?

git intellij-idea git-blame

15
推荐指数
1
解决办法
7630
查看次数