Подтвердить что ты не робот

Git и проблемы с DiffTool: на что указывают LOCAL и REMOTE?

Ive работало над тем, чтобы заставить tortoisemerge работать как опция diffftool в Git с моим файлом .gitconfig, который в настоящее время отображается:

   [diff]
        tool = tortoise

    [difftool "tortoise"]
        cmd = tortoisemerge.exe -mine:$LOCAL -base:$REMOTE

    [difftool]
        prompt = false

В соответствии с tortoise merge docs команда 'mine' указывает, какой файл будет показан справа, в двухстороннем режиме.

Мой вопрос в том, что на самом деле указывают переменные LOCAL и REMOTE, представленные Git? Документация немного расплывчато говорит о том, что

LOCAL устанавливается на имя временного файла, содержащего содержимое предварительного изображения diff, и REMOTE устанавливается на имя временного файла, содержащего содержимое пост-изображения diff.

Проблема возникает, когда я изменяю файл, а затем вводим 'git difftool' tortoisemerge запускается с файлом рабочего каталога на LEFT, а не справа, как я предполагаю. Я знаю, что могу просто переключать команды "мой" и "локальный", но я пытался выяснить, что такое локальные/удаленные точки и лучший способ решить эту проблему.

4b9b3361

Ответ 1

Я думаю, это означает, что $LOCAL всегда является a/whatever на выходе diff, а $REMOTE - b/whatever. Другими словами, если вы это сделаете:

 git difftool master experiment -- Makefile

$LOCAL будет временным файлом, показывающим состояние Makefile в ветки master, а $REMOTE будет временным файлом, отображающим его состояние в ветки experiment.

Если вы просто запустите:

git difftool

..., который показывает разницу между индексом и рабочим деревом, поэтому для каждого файла с различиями $LOCAL будет временным файлом, который совпадает с версией файла в индексе, а $REMOTE будет версией файла в вашем рабочем дереве.

Ответ 2

есть 4 компонента (обратите внимание, что до этого шага вы уже выполнили локальную проверку).

  • Локальная проверка, что ваше дерево git имеет: LOCAL
  • Глава удаленного репозитория (который будет объединен): REMOTE
  • общий предок как для LOCAL, так и для REMOTE: BASE
  • Файл, который будет записан в результате: MERGED.

Ответ 3

Я использую TortoiseSvn для merge и diff и работает как ожидалось. Пока в diff, он показывает мою рабочую копию справа. Мой .gitconfig с TortoiseSvn выглядит следующим образом

[diff]
    tool = tortoise


[merge]
    tool = tortoise


[mergetool "tortoise"]
    cmd = TortoiseMerge.exe -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
[difftool "tortoise"]
    cmd = tortoisemerge.exe -mine:\"$REMOTE\" -base:\"$LOCAL\"