6

コミット後に git ログを自動更新することはできますか、それともターミナルで別のユーティリティを使用して、自動更新する以前のすべてのコミットのリストを表示できますか?

4

3 に答える 3

8

他のソリューションよりもクリーンなので、次の方が好きです。

watch git log -2

入力がはるかに簡単

2秒ではなく、5秒ごとに更新する場合は、

watch -n 5 git log -2

watch関数/バイナリがない場合:

function watch()
{
    local delay=2
    local lines=$(tput lines)
    lines=$((${lines:-25} - 1))

    if [[ "$1" -eq "-n" ]]; then
        shift 
        delay=$((${1:-2}))
        shift 
    fi

    while true
    do
            clear
        "$@" | head -n $lines
        sleep $delay
    done
}
于 2011-08-23T07:29:15.603 に答える
4

もちろん、sleep他の回答で説明されているソリューションを使用することもできますが、それらはタイムリーな更新に依存しているため、美しくはなく、コミットとログの更新の間に遅延が発生します。

代わりに、ログが更新されたときに正確に発生する非同期更新が必要です。Linuxでは、ファイルの作成や変更などのファイルシステムイベントを監視するためにinotify-toolsここからダウンロードしてください。インストールするのは非常に小さく、前提条件はありません)。

inotifywait -m -r -e modify -e create -e close_write -e attrib .git/ | while read ; do
  clear
  git --no-pager log -2
done

.gitリポジトリのフォルダー(Gitがコミット時にファイルを変更する場所)で発生するイベントを再帰的に監視します。監視対象のイベントのセットをテストしたところですが、コミットとブランチスイッチのログオンのみを更新するだけで十分なようです。

于 2011-08-23T08:01:36.240 に答える
4

このようなことを意味しますか?

 while true; do clear; git log -2 | cat; sleep 5; done

これは、上位 2 つの git ログ エントリを示しており、5 秒ごとに更新されます。"| cat" は、git がページャーを開くのを避けるためにあります。

ただし、これは新しいリモート変更を取得しません。

于 2011-08-23T07:09:07.733 に答える