我尝试了大约30个变体,包括sh -c
版本,双引号和单引号,嵌套引号等。我遗漏了什么?
shortlog = "!git log -n $((LINES / 2))"
发布于 2014-07-08 02:48:00
我不喜欢我最后是如何让它起作用的,但这确实是唯一起作用的事情,我希望这一切都能结束。我从我的~/.gitconfig
中删除了与较短日志别名相关的所有内容,并在我的~/scripts
文件夹(它在我的$PATH
中)中创建了名为git-las
(list all short)的文件,每个文件中的代码如下:
#!/bin/bash
$height=$(tput lines)
$height=$((height / 3))
git la -$height
我做了每个可执行文件。Git将接受git las
并在我的路径上找到git-las
(没有扩展),如果它是可执行的,并执行它,它就能工作了。git la
(list all)在我的~/.gitconfig
中,是每个人都给自己命名的典型的git log --all --oneline --graph --decorate
。这是唯一起作用的东西,在我能找到的每一个在线信息上都很容易地有100个变化。即使试图将tput
内容移回~/.gitconfig
中也会失败,而$LINES
在这些工作文件中也会失败;它总是0。
这真是一场战斗,但现在我有了短日志(几个不同的大小和设置),它可以动态地与窗口进行缩放,总是给我大约1/2到1/4的单线日志输出-除以3(1/4的6),在合并提交和棘手的分支路径中占了一些额外的空间。这些硬编码我已经有一年了,但是现在我开始在机器之间正确地转换和共享我的点文件,所以我希望它对我所有不同的显示器高度都是动态的,所以不管我有多大的窗口,它都会以一种预期的方式工作。
发布于 2014-07-03 06:36:57
如果你定义了一个函数呢?
function shortlog { tmp=$(($LINES / 2)); git log -n "$tmp"; }
然后出口:
export -f shortlog
您应该把它放在您的.bashrc
中,我想如果您想每次启动终端时都使用它(当然,您可以先在孤立的胸骨上使用它)。
编辑
这个有用吗?
git config alias.shortlog '!f() { tmp=$(($LINES / 2)); git log -n "$tmp"; }; f'
https://stackoverflow.com/questions/24546428
复制相似问题