Как просмотреть diff файла в git перед фиксацией

Это часто происходит со мной:

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

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

Что-то вроде:

git diff --changed /myfile.txt

И он выведет что-то вроде:

line 23
  (last commit): var = 2+2
  (current):     var = myfunction() + 2

line 149
  (last commit): return var
  (current):     return var / 7

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

Ответ 1

Если вы хотите увидеть, что еще не было git add ed:

git diff myfile.txt

или если вы хотите увидеть уже - add ed изменения

git diff --cached myfile.txt

Ответ 2

git diff HEAD file

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

Ответ 3

Я думаю, что это идеальный вариант использования, который требует GUI. - Хотя я полностью понимаю, что он также может быть достигнут достаточно хорошо в командной строке.

Лично, каждое мое совершение, я делаю из git -gui. В котором я могу сделать несколько атомных коммитов с отдельными hunks/lines, если это имеет смысл сделать это.

Gut Gui позволяет просматривать различия в хорошо отформатированном цветном интерфейсе, довольно легкий. Похоже, вы тоже должны проверить.

Ответ 4

Вы попробовали вариант -v (или --verbose) для git commit? Он добавляет diff фиксации в редакторе сообщений.

Ответ 5

Чтобы проверить локальные различия:

git diff myfile.txt

или вы можете использовать инструмент diff (в случае, если вы хотите вернуть некоторые изменения):

git difftool myfile.txt

Чтобы более эффективно использовать git difftool, установите и используйте свой любимый инструмент графического интерфейса, такой как Meld, DiffMerge или OpenDiff.

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

Чтобы проверить изменения для каждой строки, используйте: git blame, в котором будет отображаться, какая строка была совершена, в которой зафиксировано.


Чтобы просмотреть фактический файл перед фиксацией (где master является вашей веткой), запустите:

git show master:path/my_file

Ответ 6

Еще один способ рассмотрения, если вы хотите сравнить файл с последним фиксатором, который более педантичен:

git diff master myfile.txt

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

git diff master^ myfile.txt

и один до этого:

git diff master^^ myfile.txt

Также вы можете заменить "~" на символ "^" и "имя ветки" для "master", если вы не находитесь на главной ветке.

Ответ 7

Перейдите в корневой каталог git и введите git diff *

Ответ 8

Лучшим способом, который я нашел, помимо использования специального графического интерфейса фиксации, является использование git difftool -d. Это открывает инструмент diff в режиме сравнения каталогов, сравнивая HEAD с текущей грязной папкой.