查看vimdiff中最后的N到M Git提交

查看vimdiff中最后的N到M Git提交,git,bash,Git,Bash,这里有一行说明了我想做什么: revs=(2 3); f=index.html; vimdiff -d <(git show HEAD~2:"$f") <(git show HEAD~3:"$f") revs=(23);f=index.html;vimdiff-d我不久前在SVN中编写了一个函数来区分存储库-基本上目标是“将repo版本写入一个文件,然后打开vimdiff,然后删除文件” 我不习惯git,但有一个想法: function multiDiff(){ fname

这里有一行说明了我想做什么:

revs=(2 3); f=index.html; vimdiff -d <(git show HEAD~2:"$f") <(git show HEAD~3:"$f")

revs=(23);f=index.html;vimdiff-d我不久前在SVN中编写了一个函数来区分存储库-基本上目标是“将repo版本写入一个文件,然后打开vimdiff,然后删除文件”

我不习惯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
}
该函数将每个文件的一个版本保存到临时目录,然后区分所有文件。它将被调用
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回购协议可供实践。希望这些帮助。

我不久前编写了一个函数来区分SVN中的存储库-基本上目标是“将repo版本写入文件,然后打开vim diff,然后删除文件”

我不习惯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
}
该函数将每个文件的一个版本保存到临时目录,然后区分所有文件。它将被调用
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\u variable[index]}
访问bash数组元素。bash中的数组索引从0开始

所以


revs=(23);f=index.html;vimdiff您可以使用
${array_variable[index]}
访问bash数组元素。bash中的数组索引从0开始

所以

revs=(23);f=index.html;维姆迪夫