這裏是一個班輪,說明我想要做什麼:查看最後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")