问题标签 [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跟踪文件中移动/删除的代码块
我在提交正文中有一个旧提交md5hash
(myfile.extension
不是SOME CHANGE
提交标题/元数据)。
如何在导致from的提交中生成SOME CHANGE
修改(不仅仅是存在)的提交列表,而无需检查每个差异?(不幸的是,在目前的情况下有很多。)HEAD
md5hash
我试过git rev-list --all | xargs git grep 'SOME CHANGE'
了,但这似乎找到SOME CHANGE
了文件中的所有提交。
git blame
似乎没有用,因为线条已经改变并且SOME CHANGE
已经移动。
git - GIT Diff 与责备或来源 SHA
我们觉得我们做得很好,或者在合并到 master 之前审查了每个提交。
但是,当我们准备好发布新软件时,我通常会再进行一次审查。我将最后一个生产版本与当前生产候选版本进行比较。
当我滚动浏览代码时,我正在寻找一种简单的方法,以便当我发现一些可疑的东西来隔离添加此行的单个更改时。目前,我使用带有“git blame”的第二个窗口,然后继续。当我看到一些有趣的东西时,我会从 git blame 产生一个新的差异。
有没有更好的方法可以不用到处乱跳?我正在使用带有 winmerge 的 tortoisegit 来使显示效果更好,但没有与这些工具中的任何一个结合使用
git - git blame --incremental 到底是什么增量?
文档状态:
--incremental 以专为机器使用而设计的格式增量显示结果。
但是看着输出,除了没有文件的实际行的情况下,我没有看到任何其他内容。
--incremental 实际上与 -p 有何不同?
git - 如何搜索某人用 git 更改的字符串?
我想使用搜索特定字符串,git grep
但我想通过使用来过滤结果,git blame
以知道我正在寻找的字符串已被特定人更改。
我只是不知道如何将它们结合起来以获得我想要的结果。
感谢您的帮助。
git - --no-ff merge 如何打破平分和责备?
了解 Git 工作流文章说,
所以你添加了一条新规则:“当你在你的特性分支中合并时,使用 –no-ff 来强制一个新的提交。” 这样就完成了工作,然后您继续前进。
然后有一天你在生产中发现了一个严重的错误,你需要追踪它是什么时候引入的。您运行 bisect 但继续登陆检查点提交。你放弃并亲自调查。
您将错误缩小到单个文件。你跑去责备看看它在过去 48 小时内是如何变化的。您知道这是不可能的,但责备报告该文件已数周未动过。事实证明,责备报告在初始提交时发生了变化,而不是在合并时。你的第一次检查点提交几周前修改了这个文件,但今天合并了。
no-ff 创可贴、折断的二分法和怪罪之谜都是您将螺丝刀用作锤子的症状。
git merge--no-ff
是您明确阻止快进合并的一种情况。但是,如果一个提交不是另一个提交的直接祖先,那么快进甚至不会发生。这是开发中罕见的情况。换句话说,大多数合并都是非快进类型。那么传递如何--no-ff
破坏bisect
and的功能blame
呢?
git - git blame 删除文件,自动
如何git blame
在先前已删除的文件上运行(带有git rm
)是一个常见问题。如果您只是使用旧文件名运行它,那么它会给出与从未存在的文件相同的错误:
(为了简洁起见,git 对早期命令的响应已被省略。)
一个常见的解决方案是查看git log --stat
文件被删除的版本。然后,您可以将该修订的父级传递给git blame
:
这可行,但是像这样手动搜索日志很麻烦。有没有办法告诉 git '我想查看a
过去任何修订版中曾经调用过的任何文件'?我希望有一些简单的东西,比如
这将自动检查存储库的整个历史记录以查找具有该名称的文件。
git - IntelliJ 注释与 git 责备
我正在使用 IntelliJ 的注释功能在编辑器中查看最后更改文件中的一行的人。
现在我正在使用 JGit 来读取相同的注释,但它们有所不同。对我来说,Intellij 似乎检查了提交之间没有更改行并且仍然使用旧的提交消息。JGit 没有看到它,因此发出了另一条消息。
任何人都可以确认 JGit 责备和 IntelliJ 的行为不同吗?原因是什么,如何强制 IntelliJ 表现得像 JGit?也许 IntelliJ 会忽略空格更改?
我正在使用 IntelliJ 15.0.1 和 JGit 4.1.1
c# - 在 C# 中以编程方式执行“Git blame -w”
我需要使用 C# 以编程方式获取 Git 历史中特定行的最后一位作者。我尝试使用libgit2sharp:
但这相当于命令
git blame <file>
事实上我需要
git blame -w <file>
(比较时忽略空格)
Libgit2sharp不设置-w
开关,也不提供任何参数/选项来设置它。我有什么选择?您知道与命令-w
开关兼容的任何其他库吗?blame
git - Git:相当于`git bisect`和`git blame`的`--full-history`
我已经大量使用 Git 大约 7 年了。几天前,我发现了一个令我惊讶的行为。我发现git log
,git blame
并git bisect
表现出这种奇怪的行为。一位朋友让我知道了解决我问题的--full-history
标志。git log
我想知道,对于我自己的教育,是否有git blame
和git bisect
.
随意使用此 repo 亲自查看问题:https ://dl.dropboxusercontent.com/u/1927707/problematic_repo.7z
这是它的日志:
在第一次提交中,该文件coffee
被添加。在 commit3068c7d
中,我在文件中添加了一行“sugar” coffee
。但后来我把这个分支合并到development
分支中,在那个合并中,出现了一个错误,“糖”行被删除,coffee
留空。然后添加了另一个提交b7a8d7a
,进行了不相关的更改,以进行良好的衡量。
现在我看着我的咖啡,发现里面没有糖。我清楚地记得在我的咖啡里加了糖。我运行git log coffee
,并得到这个输出:
而已。git log
既没有显示我添加糖的原始提交,也没有显示删除它的合并。缺少两个非常相关的提交。
这个问题让我沮丧了大约一个小时,因为它发生在一个巨大的企业仓库中,在那里手动查找提交要困难得多。
我还尝试使用git bisect
andgit blame
来确定这两个提交,但是这两个工具都忽略了这两个提交。git bisect
在我完成所有git bisect bad
andgit bisect good
操作后指出我错误的提交。
然后,正如我一开始所说,一位朋友指给我看--full-history
国旗:
这让我很高兴,因为它显示了两个相关的提交,一个添加糖和删除它的合并。所以我的问题解决了。但我真的希望我也能知道如何制作git bisect
和git blame
表现。有没有人碰巧知道?