7

ターミナル エミュレータで出力を表示するgit log --all --graph --oneline --decorateと、最初のコミットがターミナル画面の上部に表示されます。git logで出力ビューを終了するqと、次のコマンドのために画面の下部にいくつかの新しい行が追加されるため、 からの数行が表示されなくなります。

通常、これらのトップ行は最新の git 履歴に似ているため、最も興味深いものです。そのため、次の git コマンドを入力したときに引き続き表示されるようにしたいと考えています。

git log出力を画面の下部から開始するようにするには、つまり、最初のコミットが下部に表示されるようにするにはどうすればよいですか? 古いコミットを表示するには、上にスクロールする必要があります。

注: この--reverseフラグは、2 つの理由からオプションではありません。

  1. 最初のコミットを表示するには、毎回一番下までスクロールする必要があります。それは必要ないはずです。一番下から始めたい。
  2. --graphフラグ:とは結合しませんfatal: cannot combine --reverse with --graph
4

4 に答える 4

2

これは、ほとんどのエッジ ケースをキャッチするように思われる回答です。十分にテストされていません。

[alias]
    rlog = !"git --no-pager log --all --graph --decorate --oneline --color=always | tac | awk -f ~/switchslashes.awk | less -X +G -r"

ファイル~/switchslashes.awkが含まれている場所

{
    match($0,/([[:space:][:cntrl:]|*\/\\]+)(.*)/,a) # find the segment of the graph
    tgt = substr($0,RSTART,RLENGTH)     # save that segment in a variable tgt
    gsub(/\//,RS,tgt)                   # change all /s to newlines in tgt
    gsub(/\\/,"/",tgt)                  # change all \s to /s in tgt
    gsub(RS,"\\",tgt)                   # change all newlines to \s in tgt
    gsub(/_/,"¯",tgt)                   # change all _ to ¯ in tgt
    print tgt substr($0,RSTART+RLENGTH) # print tgt plus rest of the line
}

これは、このスクリプトの修正版です。アンダースコアをオーバーラインに置き換え、スラッシュをバックスラッシュに、またはその逆に置き換えます。これにより、テキストが によって反転された後のグラフが修正されtacます。

免責事項

大規模なリポジトリでは遅いため、これを使い始めたことはありません。すべてをロードしてから置換を適用する必要がありますが、私の好みでは時間がかかりすぎます。

于 2016-03-03T14:21:33.807 に答える
1

意図した結果に近いコマンドは

git --no-pager log --all --graph --decorate --oneline --color=always | tac | less -r +G -X

ただし、スラッシュが適切に反転されていないため、これでもグラフが少し混乱します。

アップデート

このコマンドは、スラッシュとバックスラッシュの交換、およびその逆も処理します。

git --no-pager log --all --graph --decorate --oneline --color=always | tac | sed -e 's/[\]/aaaaaaaaaa/g' -e 's/[/]/\\/g' -e 's/aaaaaaaaaa/\//g' | less -r +G -X

対応する git エイリアスは

[alias]
    rlog = !"git --no-pager log --all --graph --decorate --oneline --color=always | tac | sed -e 's/[\\]/aaaaaaaaaa/g' -e 's/[/]/\\\\\\\\/g' -e 's/aaaaaaaaaa/\\\\//g' | less -r +G -X"
于 2016-03-02T10:59:20.027 に答える
1

まず第一に、-nいつでもログに渡して、関心のあるコミットをいくつでも出力できます。


git log の出力を反転して表示するにはどうすればよいですか

--reverse次のフラグを使用します。

--reverse

コミットを逆順に出力します。

git log --reverse

git ログに関するその他のヒントとフラグについては、こちらを参照してください:
http://www.alexkras.com/19-git-tips-for-everyday-use/

于 2016-03-02T09:42:28.370 に答える