Как мне показать изменения, которые были поставлены?

Теперь это можно сделать без деревьев выражений и методов расширения безопасным типом с новой функцией C # nameof() следующим образом:

Attribute.IsDefined(typeof(YourClass).GetProperty(nameof(YourClass.Id)), typeof(IsIdentity));
1951
задан Guy Avraham 9 April 2018 в 12:28
поделиться

12 ответов

Это должно быть просто:

git diff --cached

--cached означает показывать изменения в кэше / индексе (то есть поэтапные изменения) по сравнению с текущим HEAD. --staged является синонимом --cached.

--staged и --cached не указывают на HEAD, только различие по отношению к HEAD. Если вы выбираете, что совершить, используя git add --patch (или git add -p), --staged вернет то, что поставлено.

2393
ответ дан Robert Harvey 9 April 2018 в 12:28
поделиться

Подумайте также об инструменте gitk, снабженном git и очень полезным, чтобы увидеть изменения

0
ответ дан sam 9 April 2018 в 12:28
поделиться

git gui и git-cola являются графическими утилитами, которые позволяют вам просматривать и манипулировать индексом. Оба включают простые визуальные различия для поэтапных файлов, и git-cola также может запустить более сложный инструмент визуального сравнения.

См. Мой тесно связанный ответ на Как удалить файл из индекса в git? , а также этот официальный каталог Клиентов Git - GUI .

2
ответ дан Community 9 April 2018 в 12:28
поделиться

Если у вас есть несколько файлов с поэтапными изменениями, может быть более практичным использовать git add -i, затем выбрать 6: diff и, наконец, выбрать интересующий вас файл (ы).

7
ответ дан Fred Schoen 9 April 2018 в 12:28
поделиться

Для сравнения промежуточной области с репозиторием (последним коммитом) используйте

 $git diff --staged

Команда сравнивает ваши поэтапные ($ git add fileName) изменения с вашим последним коммитом. Если вы хотите увидеть, что вы поставили, что войдет в ваш следующий коммит, вы можете использовать git diff --staged. Эта команда сравнивает ваши поэтапные изменения с вашим последним коммитом.

Для сравнения Сравнение рабочей и промежуточной версии используйте

$ git diff 

Команда сравнивает то, что находится в вашем рабочем каталоге, с тем, что находится в вашей области подготовки. Важно отметить, что git diff сам по себе не отображает все изменения, сделанные после вашего последнего коммита, - только те изменения, которые еще не выполнены. Если вы поставили все свои изменения ($ git add fileName), git diff не даст вам никакого выхода.

Кроме того, если вы подготовили файл ($ git add fileName), а затем отредактировали его, вы можете использовать git diff, чтобы увидеть изменения в файле, которые находятся в стадии подготовки, и изменения, которые не являются файлами.

10
ответ дан Goyal Vicky 9 April 2018 в 12:28
поделиться

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

Локально

... внести некоторые изменения ...

git diff # look at unstaged changes

git commit -am"partial description of changes"

... вспомнить больше изменений, не упомянутых в коммите ...

git diff origin / master # просмотр поэтапных, но не выдвинутых изменений

... изменить инструкцию поэтапной фиксации ...

git commit --amend -m"i missed mentioning these changes ...."

git push
8
ответ дан sudo bangbang 9 April 2018 в 12:28
поделиться

Если вы заинтересованы в визуальном представлении рядом друг с другом, инструмент визуального сравнения diffuse может это сделать. Это даже покажет три панели, если некоторые, но не все изменения, поставлены. В случае конфликтов будет даже четыре панели.

Screenshot of diffuse with staged and unstaged edits

Вызовите его с помощью

diffuse -m

в рабочей копии Git.

Если вы спросите меня, лучшее визуальное отличие, которое я видел за десятилетие. Кроме того, он не специфичен для Git: он взаимодействует с множеством других VCS, включая SVN, Mercurial, Bazaar, ...

См. Также: Показать и постановочные, и рабочее дерево в git diff?

52
ответ дан Community 9 April 2018 в 12:28
поделиться

Вы можете использовать эту команду.

git diff --cached --name-only

Опция --cached в git diff означает получение поэтапных файлов, а опция --name-only - в получении только имен файлов.

25
ответ дан sohnryang 9 April 2018 в 12:28
поделиться

Обратите внимание, что git status -v также показывает поэтапные изменения! (имеется в виду, что вам нужно поэтапно - git add - некоторые изменения. Никаких поэтапных изменений, никаких различий с git status -v.
Это происходит с Git 1.2.0, февраль 2006 г. . ])

В его длинной форме (по умолчанию), git status имеет недокументированную опцию «verbose», которая фактически отображает разницу между HEAD и index.

И это станет еще более полным: см. « Показать как поэтапное, так и рабочее дерево в git diff? » (git 2.3.4+, Q2 2015):

git status -v -v
47
ответ дан Community 9 April 2018 в 12:28
поделиться

Начиная с версии 1.7 и более поздних она должна быть:

git diff --staged
16
ответ дан sudo bangbang 9 April 2018 в 12:28
поделиться

ИСПОЛЬЗОВАНИЕ ВИЗУАЛЬНОГО РАЗЛИЧНОГО ИНСТРУМЕНТА

Ответ по умолчанию (в командной строке)

Верхние ответы здесь правильно показывают, как просмотреть кэшированные / поэтапные изменения в Index:

$ git diff --cached

или $ git diff --staged, который является псевдонимом.


Вместо этого запускается инструмент Visual Diff

Ответ по умолчанию выплевывает изменения diff в git bash (т.е. в командной строке или в консоли ). Для тех, кто предпочитает визуальное представление различий поэтапного файла, в git доступен скрипт, который запускает инструмент визуального сравнения для каждого просматриваемого файла, а не показывает их в командной строке, который называется difftool:

$ git difftool --staged

Это будет делать то же самое, что и git diff --staged, за исключением того, что каждый раз, когда запускается инструмент diff (то есть каждый раз, когда файл обрабатывается diff), он запускает инструмент визуального сравнения по умолчанию (в моей среде это kdiff3 ).

После запуска инструмента скрипт git diff будет приостанавливаться, пока ваш инструмент визуального сравнения не будет закрыт. Поэтому вам нужно закрыть каждый файл, чтобы увидеть следующий.


Вы всегда можете использовать difftool вместо diff в командах git

Для всех ваших потребностей в визуальных различиях, git difftool будет работать вместо любой команды git diff, включая все опции.

Например, чтобы запустить инструмент визуального сравнения, не спрашивая, делать ли это для каждого файла, добавьте опцию -y (я думаю, что обычно вы захотите это !!):

$ git difftool -y --staged

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

Или посмотреть разницу в конкретном файле, который находится в Index:

$ git difftool -y --staged <<relative path/filename>>

. Для всех опций см. Справочную страницу:

$ git difftool --help


Настройка Visual Git Tool

Чтобы использовать инструмент визуального Git, отличный от используемого по умолчанию, используйте опцию -t <tool>:

$ git difftool -t <tool> <<other args>>

Или обратитесь к справочной странице difftool, чтобы узнать, как настроить git для использования другого инструмента визуального различия по умолчанию.

14
ответ дан LightCC 9 April 2018 в 12:28
поделиться

Простое изображение делает это более понятным:

Simple Git diffs

git diff

Показывает изменения между рабочим каталогом и индексом. Это показывает, что было изменено, но не подготовлено для фиксации.

git diff --cached

Показывает изменения между индексом и HEAD (который является последней фиксацией в этой ветке). Это показывает, что было добавлено в индекс и подготовлено для фиксации.

git diff HEAD

Показывает все изменения между рабочим каталогом и HEAD (включая изменения в индексе). Здесь показаны все изменения с момента последней фиксации, независимо от того, были ли они подготовлены для фиксации или нет.

Также :

Подробнее о 365Git.

1545
ответ дан 22 November 2019 в 19:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: