【问题标题】:How to shorten output of 'git pull' command?如何缩短“git pull”命令的输出?
【发布时间】:2019-07-18 13:16:28
【问题描述】:
  • 所以我在 git 存储库上运行了 $ git pull 命令。
  • 它会输出我感兴趣的有用细节,以及许多我不关心的其他细节。
  • 那么是否有一些开关或选项可以只保留我需要的详细信息?

$ git pull

需要这个信息:

remote: Enumerating objects: 2866, done.
remote: Counting objects: 100% (2866/2866), done.
remote: Total 4840 (delta 2865), reused 2865 (delta 2865), pack-reused 1974
Receiving objects: 100% (4840/4840), 7.51 MiB | 2.98 MiB/s, done.
Resolving deltas: 100% (3810/3810), completed with 531 local objects.
From https://github.com/erlang/otp
   76da23bb4e..6053c0e4d7  master     -> origin/master
   77cff66931..39968f062e  maint      -> origin/maint
   934f9974eb..f30b1052c7  maint-21   -> origin/maint-21
 * [new tag]               OTP-21.2.6 -> OTP-21.2.6
 * [new tag]               OTP-20.3.2.1 -> OTP-20.3.2.1
Updating 76da23bb4e..6053c0e4d7

不需要这些信息:

Fast-forward
 .gitignore                                         |     3 +
 bootstrap/bin/no_dot_erlang.boot                   |   Bin 6539 -> 6541 bytes
 bootstrap/bin/start.boot                           |   Bin 6539 -> 6541 bytes
 bootstrap/bin/start_clean.boot                     |   Bin 6539 -> 6541 bytes
 bootstrap/lib/compiler/ebin/beam_a.beam            |   Bin 3364 -> 3200 bytes
 bootstrap/lib/compiler/ebin/beam_asm.beam          |   Bin 11040 -> 10996 bytes
 bootstrap/lib/compiler/ebin/beam_block.beam        |   Bin 3460 -> 3444 bytes
 bootstrap/lib/compiler/ebin/beam_disasm.beam       |   Bin 20864 -> 20860 bytes
 bootstrap/lib/compiler/ebin/beam_except.beam       |   Bin 4252 -> 4228 bytes
 bootstrap/lib/compiler/ebin/beam_jump.beam         |   Bin 10024 -> 9988 bytes
 .../lib/compiler/ebin/beam_kernel_to_ssa.beam      |   Bin 29484 -> 28880 bytes
 bootstrap/lib/compiler/ebin/beam_peep.beam         |   Bin 3644 -> 3604 bytes
 bootstrap/lib/compiler/ebin/beam_ssa.beam          |   Bin 12208 -> 12176 bytes
 bootstrap/lib/compiler/ebin/beam_ssa_bsm.beam      |   Bin 18176 -> 17952 bytes
 bootstrap/lib/compiler/ebin/beam_ssa_codegen.beam  |   Bin 37824 -> 37708 bytes
 bootstrap/lib/compiler/ebin/beam_ssa_dead.beam     |   Bin 12128 -> 11876 bytes
 bootstrap/lib/compiler/ebin/beam_ssa_lint.beam     |   Bin 7512 -> 7536 bytes
 etc...

那么我该怎么做呢?

【问题讨论】:

标签: git github git-pull


【解决方案1】:

提醒一下,git pull 命令实际上是git fetch,然后是与给定(或已解决)远程跟踪分支的合并。

对您有用的第一部分是git pull 的“获取”部分的输出。您想要的第二部分是随后的快进合并的输出。

您可以拆分操作,以便只静音第二部分:

git fetch
git pull -q

想要少打字?做一个别名

git config --global alias.qpull '!git fetch && git pull -q'

那就做吧

git qpull origin <someBranch>  # for "quiet pull" for example but anything goes of course

【讨论】:

  • 顺便说一句,那就是git qpull origin &lt;someBranch&gt;
  • @surendrapanday 哇,这是个误会,surendrapanday。是的,在我每天投的数十个赞成票中,我对你的 一个 问题投了反对票。我没有理由“随机”投票给人们。这是您出于痛苦而大胆的断言,对此我深表歉意。
  • 在问题page 上,我清楚地说明了我投反对票的原因,并且这里关于该主题的任何进一步讨论似乎都不合适......我们是否应该在别处谈论它并尝试理解每个别人的观点? (有趣的是,最后,你会因为那个人......继续对某人投反对票吗?)
【解决方案2】:

作为RomainValeri notesgit pull 只是git fetch 加上第二个 Git 命令。这是第二个对您来说“嘈杂”的 Git 命令; git fetch 打印你想要的。

git merge 嘈杂的原因是因为git merge 在默认情况下运行git diff --stat 以比较HEAD 的先前值——HEAD@{1}——与当前值,在(在这种情况下)打印之后Fast-forward 行并对分支名称执行快进操作,而不是合并,然后是更新提交的 git checkout

The git merge command 有许多其他选项,其中包括以下三个:

--stat
-n
--no-stat

在合并结束时显示 diffstat。 diffstat 也由配置选项merge.stat 控制。
使用 -n 或 --no-stat 不会在合并结束时显示 diffstat。

因此,您可以将 pull 拆分为单独的组件(如 RomainValeri 建议的那样),然后使用 git merge -n:您仍然会在此处收到快进消息,但不会收到 diffstat。

git pull 命令通常会将其大部分选项发送到git merge。这包括-n--no-stat。它的一些选项发送到git fetch,还有一些发送到两者。最后一点是在此处使用-q 的问题:它同时用于底层提取 后续合并。如果您想使用-q,这会迫使您将命令拆分为两个组件。

您还可以将merge.stat 配置为false,而无需处理任何此类问题。在那之后你所有的合并都会变得更加安静。

出于多种原因,我通常建议将git pull 分开。最重要的一点是,在 git fetch 之后,我经常想要检查我获取的内容,以决定是合并、变基还是两者都不合并。

【讨论】:

  • 我必须承认我从你那里继承了这条规则,并且总是获取而不是拉取。特别感谢关于拉参数以不同方式传递给获取和合并的部分。我完全忽略了这一点。
  • --no-stat 也可以禁止自动合并的文件吗?
  • @alper: 所有--no-stat 所做的是在合并结束时禁止运行(内部,但与手动的效果相同)git diff --stat。其他一切都一样。
猜你喜欢
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 2020-11-15
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多