Как увидеть git diff в файле vscode бок о бок?

Привет всем, мои вопросы о git diffЯ хотел бы знать, как просмотреть файл с помощью команды git diff master origin/master в терминале на моем VSCODE я сделал git fetch из моего удаленного репозитория, и теперь я хочу увидеть diff, но с помощью команды просто покажи мне в терминале. Я пытаюсь получить что-то подобное...

Пример того, что я хочу:

введите описание изображения здесь

16 ответов

В VSCODE на левой стороне есть значок git введите описание изображения здесь

Нажав на этот значок, вы можете увидеть разницу в git с двух сторон

Если вы хотите различать изменения из разных веток. Например, вы хотите увидеть все изменения от последних N коммитов в вашей ветке Feature.

  1. Настройте VSCode в качестве используемого по умолчанию difftool, добавив его в файл ~/.gitconfig.
    [diff]
        tool = vscode
    [difftool "vscode"]
        cmd = code --wait --diff $LOCAL $REMOTE
  1. Перейдите к вашему проекту git. Введите:git difftool {{ветку, с которой вы хотите проверить}}, для примера git difftool master

  2. Вам будет предложено для каждого файла, если вы хотите открыть его в VSCode или нет.

Вы можете добиться этого в Visual Studio Code с помощью

  1. Открытие настроек (В окне / Файл Linux> Настройки> Настройка. В коде macOS> Настройки> Настройки)
  2. Искать разницу
  3. Конкретный параметр - Редактор различий: рендерить бок о бок. Установите флажок.

После нескольких часов поиска, установки и удаления расширений кажется, что это уже реализовано в VSC.

Просто нажмите на верхний правый значок - "Открыть изменения"

И вернитесь к просмотру только файла, а не изменений, нажав на... верхний правый значок - "Открыть файл"

Если вы хотите сравнить две произвольные ссылки - например, сравнение ветки и ветки или фиксации и другой фиксации - и по-прежнему легко просматривать все файлы за один раз, как мы видим изменения индекса.

  • Перейдите к элементу управления «Источник» на левой панели. Если у вас нет значка, вы можете посмотреть в меню «Вид» -> «SCM» (Показать исходный элемент управления) или использовать определенный ярлык.
  • Разверните последний раздел Поиск и сравнение
  • Нажмите кнопку Сравнить ссылки ...
  • Выберите ссылки, и затем вы увидите список измененных файлов, и щелчок по одному файлу отобразит его изменения бок о бок.

Я ответил на аналогичный вопрос здесь.

Но в основном вы можете использовать следующую команду:

git difftool -x "code --wait --diff"

Открыть файл ~/.gitconfig в коде Visual Studio:

code  ~/.gitconfig

Скопируйте следующие строки в ~/.gitconfig:

[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE

Сохраните изменения. Откройте терминал в Visual Studio Code, запустив Ctrl+ Shift+ `. Выполните в терминале следующую команду:

git difftool master origin/master

Вот простой способ просмотреть ваши изменения с момента последней фиксации (в текущей ветке):

  1. Щелкните значок Git слева от VS Code.
  2. Если вы внесли изменения в файл (ы) с момента последней фиксации, вы увидите файл (ы), перечисленные в разделе "ИЗМЕНЕНИЯ"
  3. Щелкните правой кнопкой мыши имя файла (в разделе "ИЗМЕНЕНИЯ") и нажмите "Открыть изменения".
  4. Это откроет две версии файла рядом с выделенными изменениями.

Toggle inline view now is available (on the 3 dots)

Обратите внимание, что параллельный анализ различий не всегда является лучшим вариантом.

Учитыватьmicrosoft/vscodeпроблема 123111 : разрешить условный параллельный или встроенный редактор diffEditor.

Мне нравятся параллельные различия. Я также очень доволен встроенными различиями.
Что мне не нравится, так это то, что я смотрю на параллельные различия в узком окне редактора:

Эта проблема решена с помощью PR 189304 и части VSCode 1.82 (август 2023 г.).

Динамический макет

Если ширина редактора различий слишком мала, редактор автоматически переключается на встроенный вид.
Если редактор снова станет достаточно широким, предыдущий макет будет восстановлен.

Набор "diffEditor.useInlineViewWhenSpaceIsLimited": falseчтобы отключить это поведение.

Вы можете diff любые два файла, сначала щелкнув правой кнопкой мыши файл в Explorer or OPEN EDITORS выберите "Выбрать для сравнения", затем щелкните правой кнопкой мыши второй файл для сравнения и выберите "Сравнить с". 'file_name_you_chose',

В качестве альтернативы от нажатия клавиши Ctrl+Shift+P и выберите Файл: Сравнить активный файл с..., и вам будет представлен список последних файлов. Пример:

введите описание изображения здесь

Сам Vscode умеет отображать различия между любыми двумя файлами:

      code --diff file1.txt file2.txt

я считаю, что это не зависит от git diff характерная черта.

Вот еще один способ сравнить с предыдущими версиями.

  1. НаExplorerпанель.
  2. выберите файл для сравнения, затем откройте контекстное меню (щелкните правой кнопкой мыши), затем выберитеSelect for Compare.
  3. снова откройте контекстное меню, затем выберитеOpen Timeline. Дождитесь загрузки предыдущих изменений.
  4. НаTimelineвкладку, вы можете выбрать предыдущую версию и открыть контекстное меню и нажатьCompare with Selected.

Затем вы увидите файлы diff рядом.

Для быстрого просмотра различий одного файла в VSCode без дополнительной интегрированной навигации и редактирования вы можете настроить и использовать git difftool как объясняется другими ответами - или более безопасными (и глобальными), например:

git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE"
git config --global diff.tool vscode   # optionally as default

Для полностью интегрированного опыта такого рода настраиваемых различий в VSCode сделайте следующее:

# possibly commit or stash a dirty work tree before switching
git switch origin/master --detach  # new master in worktree
git reset master                   # old master as detached HEAD (diff base)

Теперь вы можете видеть и использовать эту "настраиваемую разницу", как обычно, в VSCode - как разницу между рабочим деревом и HEAD: используйте значок git SCM, дважды или щелкните правой кнопкой мыши по изменениям файла, переключите встроенный просмотр различий и т. Д.

Теперь вы даже можете работать непосредственно с этим рабочим деревом прямо в представлении различий. Чтобы зафиксировать такие изменения, сделайте следующее:

git reset origin/master    # base for added changes only
# review the bare added delta again (in VSCode)
git add/commit ...
git branch/tag my_master_fixup   # name it

Затем слейте новый мастер как обычно, вернитесь к функциональной ветке, возможно, выберите my_master_fixup, перебазируйте или что-то еще..

Чтобы этот ответ работал, мы должны выполнить несколько шагов, которые, несмотря на то, что они уже повторялись в предыдущих ответах, я перепишу их для полноты картины.

Откройте файл ~/.gitconfig, и добавьте следующие строки:

      [diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE

В некоторых ответах следующим предлагаемым шагом является выполнение git difftool <local_branch> origin/<remote_branch>.

Однако есть и другая возможность:

      git fetch origin <remote_branch>
git difftool FETCH_HEAD

Кроме того, чтобы предотвратить появление этих раздражающих подсказок, мы всегда можем сделать:

      git config --global difftool.prompt false

Из примечаний к выпуску v1.48:

Когда вы перемещаетесь по представлению управления исходным кодом, нажатие Space на изменение теперь откроет его как редактор предварительного просмотра и сохранит фокус в представлении управления исходным кодом для упрощения навигации с помощью клавиатуры.

Таким образом, вы можете downarrow изменить свой файл scm и нажать, Space чтобы открыть представление различий. Фокус остается в представлении SCM, так что вы можете продолжать это делать.

Другие вопросы по тегам