对...我在 DOS 或 Git Bash 下使用 msysgit 版本 1.6.3.2.1299.gee46c 使用 Araxis Merge 2009 的评估许可证 v2009.3713:
方法是使用新的git difftool
and git mergetool
,而不是普通的差异。
首先,让我们为这些差异和合并工具设置一些脚本
C:\>git config --global diff.tool adifftool
C:\>git config --global diff.external git-difftool--helper
C:\>git config --global difftool.adifftool.cmd "difftool.sh \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
C:\>git config --global difftool.prompt false
笔记:
- 通过将 diff.external 设置为 Git 脚本
git-difftool--helper
,即使我输入“ git diff
”,我也会使用 difftool。
- 不要忘记传递
$MERGED
给您的 difftool 脚本:这是唯一具有被 diff 文件真实名称的变量。$LOCAL
并且$REMOTE
是临时名称。
对于合并工具,您将设置以下全局值:
C:\>git config --global merge.tool amergetool
C:\>git config --global mergetool.amergetool.cmd "mergetool.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""
C:\>git config --global mergetool.prompt false
通过将这些工具设置为一些 shell 脚本,您将能够从这些脚本中切换工具。
另一种方法是命名您的工具 ( mergetool.araxis.cmd
, mergetool.winmerge.cmd
, ...) 并在diff.tool
ormerge.tool
设置中指定正确的工具。
在全局环境变量引用的目录中创建difftool.sh
和。它们甚至可以在 DOS 下工作(它们是-- shell -- 脚本)mergetool.sh
PATH
sh
差异工具.sh
#!/bin/sh
echo Launching Araxis Merge.exe: $3
t1="'$3 (from)'"
t2="'(to)'"
"C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -nowait -2 -title1:${t1} -title2:${t2} "$1" "$2"
笔记:
不可能有 -title1:"someTitle With Space" ......只有没有空格的标题才有效......所以现在,在没有任何 ' titleN
' 选项的情况下尝试它。
知道了!您不能将标题值直接传递给-title
选项,您需要将其设置为局部变量,并带有"' '"
引号组合(双引号将在 shell 脚本执行期间消失,留下简单的引号,在标题中允许空格!)
$3
代表真实名称,而不是一些用于差异目的的临时文件名。因此,$3
在title1
选项中使用了其中的空格。
git diff HEAD^ HEAD
不会在 DOS 会话中工作:只会git diff "HEAD^" HEAD
。
合并工具.sh
#!/bin/sh
# Passing the following parameters to mergetool:
# local base remote merge_result
alocal=$1
base=$2
remote=$3
result=$4
t1="'$4 (current branch)'"
t2="'(common ancestor)'"
t3="'(to be merged)'"
if [ -f $base ]
then
"C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$base" "$remote" "$result"
else
"C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$result" "$remote" "$result"
fi
当涉及多个文件(多个差异,要合并的多个文件)时,我不确定这些脚本是否能正常工作。
刚刚对其进行了测试:它可以工作,并且 Araxis compare.exe 确实为每个文件打开一个选项卡以进行比较或合并。
试一试,让我们知道;)