私はGitを使い始めたばかりです。 TortoiseMergeをdifftoolおよびmergetoolとして使用したいと思います。
個人ユーザーディレクトリの.gtconfigには、次のセクションがあります。この質問のユーザーと色のセクションを削除しました。
[merge]
tool = tortoisemerge
[mergetool "tortoisemerge"]
cmd = \"TortoiseMerge.exe\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
[diff]
tool = tortoisemerge
[difftool "tortoisemerge"]
cmd = \"TortoiseMerge.exe\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
Git Bashプロンプトでtortoisemergeと入力すると、ロードされます。パス上にあることが知られています。しかし、コマンドを入力すると、次のエラーが表示されます。
Rich:mygittest (master *)
$ git difftool
error: 'tortoisemerge' can only be used to resolve merges
merge tool candidates: kompare emerge vimdiff
No known merge resolution program available.
external diff died, stopping at readme.txt.
Rich:mygittest (master *)
$
この仕事をするために理解していないことは何ですか? TortoisemergeはTortoiseSVNとともにインストールされます。
次の設定は私にとってはうまく機能します。ただし、TortoiseSVNではなくTortoiseGitを使用しています。 diffのパラメーターの違いに注意してください。
[diff]
tool = tortoisediff
[difftool]
Prompt = false
[merge]
tool = tortoisemerge
[mergetool]
Prompt = false
keepBackup = false
[difftool "tortoisediff"]
cmd = \""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"\" -mine "$REMOTE" -base "$LOCAL"
[mergetool "tortoisemerge"]
cmd = \""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"\" -base "$BASE" -theirs "$REMOTE" -mine "$LOCAL" -merged "$MERGED"
スペースを含むファイル名が正しく処理されるように、@ melbournの答えの最後の行を
cmd = \""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"\" -base "$BASE" -theirs "$REMOTE" -mine "$LOCAL" -merged "$MERGED"
リベースするときは、スイッチ$theirs
および$mine
。これは、マージするときとリベースマージするときに異なるためです。ここで確認してください:
したがって、mergetoolのみを使用して私のようにリベースする場合は、次のようにします。
[mergetool "tortoisemerge"]
cmd = \""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"\" -base "$BASE" -theirs "$LOCAL" -mine "$REMOTE" -merged "$MERGED"
Klas Mellbournのすばらしい回答です!時間を大幅に節約できました。 1つの欠点は、リポジトリ内のAdded
またはRemoved
ファイルが、difftoolコマンドの実行中に表示されないことです。それらを比較するものは何もありません!これに基づいて私がしたことは次のとおりです(同僚の answer に触発された)。
empty.empty
ディレクトリに$Home
という名前のファイルを作成します(bashでstart ~
を実行します)。名前が示すように、空のままにしてください。tortoisediff.sh
という名前の別のファイルを$Home/bin
ディレクトリに作成し、次のコンテンツを追加します:
#!/bin/sh
# $LOCAL $REMOTE seem to be swapped
# $1 is $LOCAL
# $2 is $REMOTE
difftool='/c/Program Files/TortoiseGit/bin/TortoiseGitMerge.exe'
NULL="/dev/null"
empty="C:/home/empty.empty"
if [ "$1" == "$NULL" ]; then
echo "Added: " "$2"
"$difftool" /base:"$empty" /mine:"$2" /readonly:"$empty"
Elif [ "$2" == "$NULL" ]; then
echo 'Removed: ' "$1"
"$difftool" /base:"$1" /readonly:"$1" /mine:"$empty"
else
echo 'Modified' "$2"
"$difftool" /base:"$1" /basename:"$1" /readonly:"$1" /mine:"$2" /minename:"$2"
fi
# Checkout https://tortoisegit.org/docs/tortoisegitmerge/tme-automation.html for more
.gitconfigファイルを変更します(回答の11行目)
cmd = tortoisediff.sh "$LOCAL" "$REMOTE"
これにより、アプリケーションを直接開くのではなく、difftoolがtortoisediff.shを参照するようになります。
git add .
の代わりにgit difftool --staged
に続けてgit difftool
を実行する必要があります。[diff]
tool = tortoisediff
[difftool]
Prompt = false
[merge]
tool = tortoisemerge
[mergetool]
Prompt = false
keepBackup = false
[difftool "tortoisediff"]
cmd = \""C:/Users/$USER/Desktop/TortoiseMerge.exe"\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
[mergetool "tortoisemerge"]
cmd = \""C:/Users/$USER/Desktop/TortoiseMerge.exe"\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
TortoiseMerge 1.6.7(Portable)を使用して、これはうまくいきました