问题标签 [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 投票
1 回答
225 浏览

git - 如何运行 git diff 并在结果输出中包含修订信息

我需要得到git diff预计每行都有修订信息的输出,即

其实我只需要作者的名字

0 投票
1 回答
38 浏览

git - Git 日志在已知行周围的差异

当我知道某行时,是否可以在 git 中记录文件的提交,并希望以 N 行的比例显示编辑了该行上方或下方的行的提交?

我想找到,哪个提交破坏了功能,当某些方法调用或一段代码应该在另一个方法调用周围的某个地方时,但它不是,而且我不知道丢失的方法调用或一段代码的确切名称.

0 投票
0 回答
880 浏览

git - git blame 忽略空格选项被窃听?

根据我的理解,该命令git blame应该为文件中的每一行显示作者和最后修改该行的提交。例如,如果我运行git blame -- "<filename>"并获得第 5 行的以下输出:

这意味着该行.root {来自提交Walrus中的作者106b77db。换句话说,如果我检查106b77dbusing生成的补丁git show -p 106b77db,我希望该行+.root {出现在 diff 中。确实如此。

106b77db来自diff 的片段<filename>

现在,当我运行时git blame -w -- "<filename>",(该-w选项忽略空白更改,即及时向后跟踪每一行以找到最后一位对该行引入空白更改的作者),我现在得到第 5 行的以下输出:

但是,当我检查b6a6e8a2使用的补丁时git show -p b6a6e8a2,差异显示.root {而不是+.root {预期的。

b6a6e8a2来自diff 的片段<filename>

Git是否给了我错误的输出,因为根据差异,该行在.root {提交中根本没有修改b6a6e8a2

我正在使用 Git 2.13.3.windows.1。

编辑:存储库是https://github.com/cs2103jan2016-f14-2j/main,文件是JimplePlanner/src/application.css. 升级到 Git 2.16.1.windows.4 后,问题依然存在。

0 投票
0 回答
1652 浏览

c# - Visual Studio 对同一视图的责备/注释

在使用 Eclipse 和 IntelliJ 进行 Java 开发时,我习惯于在编辑模式下看到我正在处理的更改旁边的注释行。好吧,显然 Visual Studio 总是将注释打开到一个单独的不可编辑的窗口。

所以问题是:是否有可能(例如使用插件)在编辑视图中显示注释(在这种情况下为 git),就像 Eclipse 和 IntelliJ 允许的那样。

0 投票
1 回答
1552 浏览

git - 改进 IntelliJ 注释(git blame)

我想改进“注释选项”(右键单击代码行号冒号->注释),它类似于 git blame(但集成到 IntelliJ)。

1/有可能吗?(通过插件或 IntelliJ 文件的原始修改?其他?)
2/我在 Android Studio 上(基于 IntelliJ),这会是一个问题吗?
3/ 如果 1/ 和 2/ 为真,关于如何开始的任何提示?

PS:我的目标不是在 annonate 中显示一些提交(如“重新格式化”),因为它们不提供有关代码历史的关键信息。

0 投票
1 回答
278 浏览

atom-editor - Atom 编辑器中的当前行责备

VS Code 的 GitLense 扩展中有一个功能,我正试图找到与 Atom 等效的功能。这是当前线路责备功能。

我已经安装了 Atom blame包,它可以工作,但是对于有大量提交的大文件加载速度很慢。

Atom 或任何软件包中是否有任何内容会显示当前行的责任?

0 投票
0 回答
185 浏览

git - 如何找到重叠的 Git 提交

我正在为我团队的 Git 存储库做某种考古。目标是找到所有重叠的提交,例如所有涉及相同代码行的提交对。

我试图用 diff 和 blame 命令来做到这一点。第一个不是那么可靠,因为它提供的代码行范围具有一种相对寻址。而且很难通过 1000 多次提交来跟踪这些地址。第二个选项提供了很好的每个文件输出,但没有任何中间信息(尤其是在删除代码行时)。

我相信一定有更好的方法来实现我的目标。期待任何建议!

0 投票
1 回答
252 浏览

git - Git 责备 -C -C 似乎不起作用

命令的git 文档中blame它说(强调我的):

C[<数字>]

除了 -M 之外,检测从在同一提交中修改的其他文件移动或复制的行。当您重新组织程序并跨文件移动代码时,这很有用。当此选项被给出两次时,该命令还会在创建文件的提交中查找其他文件的副本。当此选项被给出 3 次时,该命令还会在任何提交中查找来自其他文件的副本。[...]

首先,“提交中创建文件的其他文件”是什么意思?它是否查找在添加文件的同一提交中修改的文件?或者它是否查找仅存在于添加文件的提交树中的所有文件?

我尝试了一个示例,在该示例中,我在同一个提交中创建了一个非空文件(named source)和一个空文件(name )。dest在接下来的提交中,我做了一些不相关的事情。在第三次也是最后一次提交中,我从sourceto复制了几行dest。结果如下所示(内容比较大,尽量不要混淆git的算法,对此我深表歉意):

可以看出,git blame -C -C dest没有意识到中的新行dest来自source,该文件是使用与dest. 但是,git blame -C -C -C dest给出了预期的输出。

难道我做错了什么?

谢谢你。

编辑:

我相信

[...]当这个选项被给出两次时,该命令还会在创建文件的提交中查找来自其他文件的副本。[...]

意味着它将查找git在实际创建文件的提交中发生的行副本(来自其他文件),而不是它将查找来自其他文件(存在于创建文件的提交中的文件)的行副本。这个误会和我的第一个问题有关。

0 投票
2 回答
99 浏览

git - 确定提交是否包含保留在当前版本中的更改

语境:

通常在调查问题时,我会引入调试语句(与解决方案隔离,在他们自己的提交中),然后一旦我有解决方案,我将删除所有这些调试语句。然而,有时,在查看差异或责备时,不清楚在调试中引入了哪些更改以及哪些更改是作为解决方案的一部分。在这种情况下,我想确定,对于任何特定的提交或一组提交,哪些行(如果有)在该提交中发生了更改,并且以后不再更改。这样我可以确定所有调试更改都已正确还原。

通常,我会简单地通过 git 还原提交,但特别是当在解决方案上花费很长时间,在修复和调试之间交替时,可能会有代码更改提交删除在调试中引入的行,这很git revert重要。

概括:

我想查看存储库中任何文件中的任何行,这些行将标有git blame. 也就是说,任何被给定提交触及并且此后未更改的行。目前,我的工作流程如下:

对于每个哈希:

对于每个文件:

0 投票
1 回答
462 浏览

git - Git blame 命令获取两个日期之间的列表

Git给出了since选项

有没有办法在两个日期之间获得责任清单?
即:类似于git log --sinceand的东西--until