预览Git推送

我如何看到哪些提交实际上会推送到远程存储库?

据我所知,无论何时从远程存储库中取出master,即使是空的,提交都可能会生成。

这使得当地的主人即使没有任何推动力,也会“前进”。

现在,如果我尝试(从主人):

git cherry origin master

我了解将要推出什么,尽管这也显示了我已经推出的一些提交。 有没有办法只显示将要推送的新内容?


记住origin/master是在最后一次拉动时指向远程命名origin的主分支头部的引用,因此您可以使用如下命令

$ git log origin/master..master

你可以在git push --dry-run --porcelain输出的注释下面使用git-preview-push

#! /usr/bin/env perl

use warnings;
use strict;

die "Usage: $0 remote refspecn" unless @ARGV == 2;
my($origin,$refspec) = @ARGV;
my @cmd = qw/ git push --dry-run --porcelain /;
no warnings 'exec';
open my $fh, "-|" => @cmd, $origin, $refspec or die "$0: exec: $!";
# <flag> t <from>:<to> t <summary> (<reason>)
my $update = qr/^ (.*)         t    # flag (optional)
                  (S+):(S+)  t    # from:to
                  (.+)               # summary
                  (?:[ ] ((.+)))?  # reason
                $/x;

while (<$fh>) {
  next unless my($flag,$from,$to,$summary,$reason) = /$update/;
  if ($flag eq "!") {
    print "$0: $refspec rejected:n", $_;
  }
  elsif ($flag eq "=") {
    print "$0: $refspec up-to-daten";
  }
  if ($summary =~ /^[0-9a-f]+..[0-9a-f]+$/) {
    system("git log --pretty=oneline $summary") == 0
      or warn "$0: git log exited " . ($? >> 8);
  }
  elsif ($summary eq "[new branch]") {
    print "$0: $refspec creates a new branch.n";
  }
}

用法示例:

$ git preview-push /tmp/bare master
To /tmp/bare
270f8e6bec7af9b2509710eb1ae986a8e97068ec baz
4c3d1e89f5d6b0d493c9d0c7a06420d6b2eb5af7 bar

我写了一个工具来做到这一点,称为git wtf:https://github.com/michaelklishin/git-wtf。 颜色和一切!

作为奖励,它还将向您展示功能分支与整合分支之间的关系。


我在〜/ .gitconfig中添加了以下别名,以显示合并的内容(在拉取过程中),将要推送的内容以及与远程对象进行比较的别名:

[alias]
        # diff remote branch (e.g., git diff origin/master master)
        difr = "diff @{u}"

        # similar to hg incoming/outgoing, showing what would be pulled/pushed
        # use option "-p" to see actual patch
        incoming = "!git remote update -p; git log ..@{u}"

        # showing what would be pushed (see also alias difr)
        outgoing = log @{u}..
链接地址: http://www.djcxy.com/p/31743.html

上一篇: Preview a Git push

下一篇: Object.getOwnPropertyNames vs Object.keys