在终端中运行后提交后自动刷新git日志

时间:2011-08-23 06:57:40

标签: git git-log

是否可以在提交后自动刷新git log,或者我可以在终端中使用另一个utillity来查看自动刷新的所有先前提交的列表?

3 个答案:

答案 0 :(得分:7)

我更喜欢以下内容,因为它比其他解决方案更清晰:

watch git log -2

更容易输入

如果要每5秒刷新一次,而不是2秒,请使用

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
}

答案 1 :(得分:4)

当然,我们可以使用其他答案中描述的sleep解决方案,但它们依赖于及时更新,这不是很好,并且会导致提交和日志更新之间的延迟。

相反,我们希望看到的是在更新日志时恰好发生的异步更新。在Linux中,我们有inotify-toolsdownload here,它们的安装非常小,没有先决条件)来监视文件系统事件,例如创建和修改文件。

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在提交时修改文件)。我刚刚测试了一组监视事件,似乎只更新了提交和分支交换机上的日志。

答案 2 :(得分:3)

你的意思是这样的吗?

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

这显示了前两个git日志条目,每5秒刷新一次。 “| cat”是为了避免git打开寻呼机。

但是,这并没有获得新的远程更改。