Git 我怎样才能得到;吉特秀;要在完整上下文中显示差异?

Git 我怎样才能得到;吉特秀;要在完整上下文中显示差异?,git,git-show,Git,Git Show,我正在回顾一个非常古老的承诺。我希望看到某个特定提交所做的更改,但我希望在完整的上下文中看到,即我希望看到整个文件以及该人所做的更改。以下命令 git show -w <commit-id> git show-w 没有给我完整的背景。有什么建议吗?git show带有以下标志 -U<n>, --unified=<n> Generate diffs with <n> lines of context instead of the usua

我正在回顾一个非常古老的承诺。我希望看到某个特定提交所做的更改,但我希望在完整的上下文中看到,即我希望看到整个文件以及该人所做的更改。以下命令

git show -w <commit-id>
git show-w

没有给我完整的背景。有什么建议吗?

git show
带有以下标志

-U<n>, --unified=<n>
    Generate diffs with <n> lines of context instead of the usual
    three. Implies -p.
您将获得完整的上下文

例子 为本例克隆一些存储库(例如:

$git克隆https://github.com/git/git
$cd吉特
尝试在某个提交的文件(例如
Documentation/RelNotes/2.3.0.txt
)上运行有问题的命令:

$git show-U100--Documentation/RelNotes/2.3.0.txt
提交1e6f5b22ad318446500fbd3b94b733eddd5b6414
作者:Junio C Hamano
日期:星期三2015年1月7日13:12:54-0800
第四批2.3周期
签字人:Junio C Hamano
diff--git a/Documentation/RelNotes/2.3.0.txt b/Documentation/RelNotes/2.3.0.txt
索引1b1dcbb..7f25bbf 100644
---a/Documentation/RelNotes/2.3.0.txt
+++b/Documentation/RelNotes/2.3.0.txt
@@ -1,165 +1,247 @@
Git v2.3发行说明
======================
自v2.2以来的更新
------------------
港口
*Cygwin上最近的gcc工具链开始抛出编译警告,
已经被压制了。
用户界面、工作流程和功能
*当用户需要时,使用“GIT_SSH”机制很麻烦
向底层ssh传递一组额外的参数。一个新的
环境变量GIT_SSH_COMMAND可用于此目的。
*通过“git notes”存储空便笺的请求,旨在删除
注意对象,但使用--allow empty,我们将存储
(惊讶!)注意,这是空的。
*“git解释预告片”学会了正确处理
“冲突:”最后阻塞。
*“git am”learned--message id”选项,用于复制
将传入的电子邮件发送到结果提交的日志消息。
+*“git clone--reference=”学会了”--解离”
+与之相伴的选择;它从引用对象借用对象
+克隆时存储仅用于减少网络流量,然后
+通过执行以下操作将生成的克隆与引用分离
+借用对象的本地副本。
+
*“git发送电子邮件”学习--“传输编码”选项强制
无故障内容传输编码头(例如base64)。
...
健康检查 将该命令的输出与
文档/RelNotes/2.3.0.txt
的内容进行比较

$cat Documentation/RelNotes/2.3.0.txt
Git v2.3发行说明
======================
自v2.2以来的更新
------------------
港口
*Cygwin上最近的gcc工具链开始抛出编译警告,
已经被压制了。
用户界面、工作流程和功能
*当用户需要时,使用“GIT_SSH”机制很麻烦
向底层ssh传递一组额外的参数。一个新的
环境变量GIT_SSH_COMMAND可用于此目的。
*通过“git notes”存储空便笺的请求,旨在删除
注意对象,但使用--allow empty,我们将存储
(惊讶!)注意,这是空的。
*“git解释预告片”学会了正确处理
“冲突:”最后阻塞。
*“git am”learned--message id”选项,用于复制
将传入的电子邮件发送到结果提交的日志消息。
*“git clone--reference=”学会了”--解离”
与之相伴的选择;它从引用对象借用对象
克隆时存储仅用于减少网络流量,然后
通过执行以下操作将生成的克隆与引用分离
借用对象的本地副本。
*“git发送电子邮件”学习--“传输编码”选项强制
无故障内容传输编码头(例如base64)。
*“git send email”通常通过X-Mailer:中的标题标识自己
它发出的信息。一个新的命令行标志——no-xmailer
允许用户压制标题。
*“git推送”到具有工作树的存储库中
修改签出的分支。指挥部学会了
(可选)仅当出现以下情况时才执行与“git reset--hard”等效的操作
对工作树和索引没有更改,这将
通过推入存储库来“部署”是有用的。
*“git new workdir”(contrib/)可用于填充空的
和现有目录。
从中,以下内容将为您提供查看特定提交的文件:

  git show REVISION:path/to/file
编辑:根据下面的评论,上面可能与OP的要求不太一致

为了获得特定版本的文件以及每行的更改和作者,您应该使用:

  git blame REVISION path/to/file

尝试了
git log-p commit id
?该命令也不会给出完整的文件。它显示了几行only@MAG对我的回答或jas_raj的回答有任何反馈吗?@Jubobs非常感谢你的帮助和时间。我使用的是非常旧的git版本,因此我的机器上没有git show。git的输出格式非常糟糕,因为我的目标是理解代码的某些部分。所以我求助于git show-w plain,同时打开了完整的代码side@MAG啊,对不起,有个误会。Git动词有时在文本中用连字符书写。我真的是指你知道的《代码》git秀。关于我的答案,git show-U1000不就是你想要的吗?我不认为这是OP想要的。他/她写道“我想看到某个特定提交所做的更改[…]”。我理解这是因为看到了有问题的提交和它的父母之一之间的差异。您发出的命令将只打印存储在
中的整个修订版;它不会显示该提交引入的更改。@shkschneider OP还写道:我想查看整个文件以及此人所做的更改。我可能错了,但我认为这里没有模棱两可的余地。