Как увидеть git diff в файле vscode бок о бок?
Привет всем, мои вопросы о git diff
Я хотел бы знать, как просмотреть файл с помощью команды git diff master origin/master
в терминале на моем VSCODE я сделал git fetch
из моего удаленного репозитория, и теперь я хочу увидеть diff, но с помощью команды просто покажи мне в терминале. Я пытаюсь получить что-то подобное...
Пример того, что я хочу:
16 ответов
Если вы хотите различать изменения из разных веток. Например, вы хотите увидеть все изменения от последних N коммитов в вашей ветке Feature.
- Настройте VSCode в качестве используемого по умолчанию difftool, добавив его в файл ~/.gitconfig.
[diff]
tool = vscode
[difftool "vscode"]
cmd = code --wait --diff $LOCAL $REMOTE
Перейдите к вашему проекту git. Введите:git difftool {{ветку, с которой вы хотите проверить}}, для примера git difftool master
Вам будет предложено для каждого файла, если вы хотите открыть его в VSCode или нет.
Вы можете добиться этого в Visual Studio Code с помощью
- Открытие настроек (В окне / Файл Linux> Настройки> Настройка. В коде macOS> Настройки> Настройки)
- Искать разницу
- Конкретный параметр - Редактор различий: рендерить бок о бок. Установите флажок.
После нескольких часов поиска, установки и удаления расширений кажется, что это уже реализовано в 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
Вот простой способ просмотреть ваши изменения с момента последней фиксации (в текущей ветке):
- Щелкните значок Git слева от VS Code.
- Если вы внесли изменения в файл (ы) с момента последней фиксации, вы увидите файл (ы), перечисленные в разделе "ИЗМЕНЕНИЯ"
- Щелкните правой кнопкой мыши имя файла (в разделе "ИЗМЕНЕНИЯ") и нажмите "Открыть изменения".
- Это откроет две версии файла рядом с выделенными изменениями.
Обратите внимание, что параллельный анализ различий не всегда является лучшим вариантом.
Учитывать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
характерная черта.
Вот еще один способ сравнить с предыдущими версиями.
- На
Explorer
панель. - выберите файл для сравнения, затем откройте контекстное меню (щелкните правой кнопкой мыши), затем выберите
Select for Compare
. - снова откройте контекстное меню, затем выберите
Open Timeline
. Дождитесь загрузки предыдущих изменений. - На
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, так что вы можете продолжать это делать.