这里是一个班轮,说明我想要做什么:查看最后N到M的Git在vimdiff同时提交
revs=(2 3); f=index.html; vimdiff -d <(git show HEAD~2:"$f") <(git show HEAD~3:"$f")
如何使用数组转速,避免硬编码?
这里是一个班轮,说明我想要做什么:查看最后N到M的Git在vimdiff同时提交
revs=(2 3); f=index.html; vimdiff -d <(git show HEAD~2:"$f") <(git show HEAD~3:"$f")
如何使用数组转速,避免硬编码?
我在SVN写了一个函数前一阵子把分差对库 - 基本目标是“写回购版本的文件,然后打开vim的差异,然后再删除文件”
function diff(){
file=${!#}
tmpfile=/tmp/repo/${!#}
mkdir -p `dirname $tmpfile`
svn cat [email protected] > $tmpfile
vimdiff $file $tmpfile
rm -rf /tmp/repo/
}
我“M不习惯的Git,但这里有一个想法:
function multiDiff(){
fname=$1
shift
files=""
while (("$#"))
do
tmpfile="/tmp/repo/$1/$fname"
mkdir -p `dirname $tmpfile`
git show HEAD~$1:$fname > $tmpfile
files="$files $tmpfile"
shift
done
vimdiff $files
rm -rf /tmp/repo
}
的函数保存一个版本的每个文件到临时目录中,然后DIFFS所有文件。它会被调用multidiff index.html 2 3 4
你甚至可以编写一个方便的功能做序列:
function multiDiffSeq(){
multiDiff $1 `seq $2 $3`
}
这将转化multiDiffSeq index.html 2 4
到multiDiff index.html 2 3 4
。
这种配置的这最大的好处是,文件的扩展名被保留,这意味着你的语法高亮将被保留。
如果是在GIT处理一些错误,对不起 - 我现在还没有一个git回购练对抗。希望那些帮助。
您可以使用${array_variable[index]}
访问bash数组元素。在bash数组索引从0开始。
所以
revs=(2 3); f=index.html; vimdiff <(git show HEAD~${revs[0]}:"$f") <(git show HEAD~${revs[1]}:"$f")