Это часто случается со мной:
Я работаю над парой связанных изменений одновременно в течение дня или двух, и когда приходит время коммитить, я забываю, что изменилось в конкретном файле. (Это всего лишь личное 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
Таким образом, я мог быстро увидеть, что я сделал в этом файле с момента последней проверки.
git add -p
. Проверяйте каждое изменение, выборочно одобряйте изменения на этапе, отменяйте в любое время, если вы передумали, и даже встроенное редактирование чанка. Я никогдаgit add
без этого.q
git config --global diff.noprefix true
.покажет вам изменения, которые вы добавили в ваше рабочее дерево с момента последнего коммита. Все изменения (поэтапно или не поэтапно) будут показаны.
источник
Чтобы проверить местные различия:
или вы можете использовать инструмент сравнения (если вы хотите отменить некоторые изменения):
Для
git difftool
более эффективного использования установите и используйте свой любимый инструмент с графическим интерфейсом, например, Meld, DiffMerge или OpenDiff.Примечание: вы также можете использовать
.
(вместо имени файла), чтобы увидеть текущие изменения каталога.Чтобы проверить изменения для каждой строки, используйте:,
git blame
который покажет, какая строка была зафиксирована в каком коммите.Чтобы просмотреть фактический файл перед фиксацией (где
master
находится ваша ветка), выполните:источник
Вы пробовали
-v
(или--verbose
) вариант дляgit commit
? Он добавляет разницу в коммит в редакторе сообщений.источник
Changes not staged for commit:
которой редактор коммитов может стать более чистым.Другой метод, который стоит рассмотреть, если вы хотите сравнить файл с последним коммитом, который более педантичен:
Преимущество этого метода в том, что вы можете сравнить его с предпоследним коммитом:
и тот, что до этого:
Также вы можете заменить '~' символом каретки '^' и 'имя вашей ветки' на 'master', если вы не находитесь в главной ветке.
источник
Я думаю, что это идеальный вариант использования, гарантирующий графический интерфейс. - Хотя я полностью понимаю, что это также может быть достигнуто достаточно хорошо в командной строке.
Лично каждый коммит я делаю из гит-гуй. В котором я могу сделать несколько атомарных коммитов с отдельными фрагментами / строками, если это имеет смысл.
Gut Gui позволяет просматривать различия в хорошо отформатированном цветном интерфейсе, довольно легкий. Похоже, это то, что вы должны проверить тоже.
источник
git bisect
, которые на самом деле не доступны.tig
«интерфейс текстового режима для Git».В macOS перейдите в корневой каталог git и введите
git diff *
источник
Лучший способ, который я нашел, кроме использования выделенного графического интерфейса для коммитов, - это использовать
git difftool -d
- Это открывает ваш инструмент сравнения в режиме сравнения каталогов, сравнивая HEAD с текущей грязной папкой.источник
Это показывает сравнение, используя окно щелевой VI в терминале.
источник