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




как залить изменения на github (9)

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

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

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

$ git diff --cached

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


Запуск инструмента визуального разлома вместо

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

$ git difftool --staged

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

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


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

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

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

$ git difftool -y --staged

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

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

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

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

$ git difftool --help


Настройка инструмента Visual Git

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

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

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

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

Я видел, что на странице git-diff(1)

git diff [--options] [-] [...]

Эта форма предназначена для просмотра изменений, внесенных вами по отношению к индексу (промежуточная область для следующего фиксации). Другими словами, различия - это то, что вы могли бы сказать git, чтобы добавить к индексу, но у вас все еще нет. Вы можете выполнить эти изменения, используя git-add (1).

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


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

git diff --cached --name-only

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


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

в местном масштабе

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

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

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

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

diffuse -m

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

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

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


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

git diff --staged

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

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

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

git status -v -v

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


Простая графика делает это яснее:

git diff

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

git diff --cached

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

git diff HEAD

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

Также :

На 365Git. есть более подробная 365Git.


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

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





git-stage