- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我运行这个命令:
git log HEAD --numstat --pretty="%ae" | cat
我看到了这个:
6 4 frontend/src/Frontend.hs
aviansys@gmail.com
dan.side@gmail.com
dan.side@avian.systems
3 3 dep/rhyolite/github.json
29 14 frontend/src/Frontend.hs
aviansys@gmail.com
3 1 backend/src/Backend/RequestHandler.hs
27 18 frontend/src/Frontend.hs
dan.side@avian.systems
5 0 default.nix
7 0 dep/reflex-dom/default.nix
7 0 dep/reflex-dom/github.json
7 0 dep/reflex/default.nix
7 0 dep/reflex/github.json
dan.side@avian.systems
dan.side@avian.systems
dan.side@avian.systems
将多个电子邮件与一个提交关联到底意味着什么?这是否可能意味着该人从一个网络转移到另一个网络(比如把他们的笔记本电脑带回家,然后完成他们的提交?)我正在尝试解析提交并将它们分配给一个作者,但是将多个电子邮件附加到一个提交正在这更难?
最佳答案
正如您已经发现的那样,您在 git log
输出中包含了 merge 。默认情况下,在查看 merge 时,git log
不会将 merge 与其父项进行比较,因此也不会输出 --numstat
.
跳过 merge (使用 git log --no-merges
)是......好吧,但是如果你这样做,你会丢失关于 merge 期间所做的任何更改的信息。这可能是您能做的最好的事情,因为您可以从 merge 中获得的信息很棘手。
考虑如下图:
...--o--A
\
M--...
/
...--o--B
Git 会将 M
与……什么进行比较?标准的 git diff
比较两个 提交。您应该比较哪两个提交,以了解 M
中的快照?是A
-vs-M
,还是B
-vs-M
?
这个问题没有唯一的正确答案。为了避免必须选择一个答案,git log
默认情况下根本不会打扰 M
。但是您可以使用以下三个选项中的任何一个来告诉它无论如何应该 diff:
-c
:产生一个组合差异--cc
(两个破折号,两个小写的 C):产生一个组合差异-m
:通过“虚拟拆分” merge 产生多个非组合差异这两种组合差异并不完全相同,但我从未见过对它们之间差异的意图进行适当的描述。他们都首先从差异中抛出 任何 文件,其副本在 M
中的副本与其在 A
中的副本完全匹配或 B
。 (如果 merge 有两个以上的父级,此阶段将丢弃与任何 父级中的副本完全匹配的任何文件。)
然后,在减少文件数量后——有时减少到零!—— merge 的 diff 继续将两个(或所有)父版本与该文件的(单个)子版本进行比较提交 M
。参见 the git diff
documentation on combined merges了解更多。
-m
选项更有用,尤其是与 --first-parent
选项结合使用时。在这种情况下,Git 假装——仅用于 diff
目的——M
已被拆分为多个单独的副本:
...--o--A--M1--...
...--o--B--M2--...
既然 merge 已经被拆分,每个副本只有一个父副本,所以 Git 实际上可以只使用 git diff A M1
并向您展示。然后它可以继续 git diff B M2
并向您展示。每个差异中使用的实际快照只是实际提交 M
的(单个)快照。
如果将其与 --first-parent
结合使用,git log
仅遍历每个 merge 的 first 父级,并且仅生成 merge 的第一父差异。因此,这个 git log
不是实际的图表,而是向您展示了如果图表只是:
...--o--A
\
M--...
您根本看不到提交 B
(也没有它的父级),但是您确实得到了描述提交 M
的差异,与提交 A
,因此 --numstat
适用于这种情况。
关于git log --numstat 有奇怪的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57333971/
我运行这个命令: git log HEAD --numstat --pretty="%ae" | cat 我看到了这个: 6 4 frontend/src/Frontend.h
我正在尝试运行 git diff --no-index --numstat 在 Linux(Debian Docker 容器)上,但我找不到实现此目的的方法。本质上,我想将文件的内容作为字符串而不是
有什么方法可以在一次运行中获得运行 git diff --numstat 和 git diff --name-status 的输出? 我的问题是,如果我只使用 --numstat 那么我不知道是否刚刚
我正在比较具有相同选项的 git show 和 git log。我在不同的提交上得到不同的结果。我还没有真正深入研究文档来弄清楚这是为什么,但我猜这与每个命令如何解释修订列表以及提交图的样子有关?例如
我正在编写一个脚本来分析对 git repo 所做的更改。 在某些时候,我需要遍历所有提交并获取有关每个提交的这些信息: 提交 ID 日期 提交消息 ... 文件已更改 文件名 更改类型(添加/修改/
对于提交的所有文件,我想要状态修饰符 --name-status 提供,以及添加和删除的行数 --numstat 给出。假设我有以下内容: > git log --pretty=format:"%aN
我是一名优秀的程序员,十分优秀!