Смотрите изменения в конкретном файле, используя git - PullRequest
381 голосов
/ 08 ноября 2011

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

Как я могу проверить только изменения в одном конкретном файле? Скажем, я изменил файлы file_1.rb, file_2.rb, ..., file_N.rb, но меня интересует только изменения в файле file_2.rb. Как я могу проверить эти изменения (перед тем как зафиксировать)?

Ответы [ 9 ]

533 голосов
/ 08 ноября 2011

Используйте команду типа:

git diff file_2.rb

См. Документацию git diff для получения полной информации о видах вещей, для которых вы можете получить различия.

Обычно, git diff сам по себе показывает все изменения во всем хранилище (не только в текущем каталоге).

75 голосов
/ 28 февраля 2014

Вы можете использовать gitk [filename], чтобы просмотреть журнал изменений

69 голосов
/ 09 июля 2015

Другой метод (упомянутый в в этом ответе SO ) будет хранить историю в терминале и даст вам очень глубокую запись о самом файле:

git log --follow -p -- file

Это покажет всю историю файла (включая историю после переименований и различия для каждого изменения).

Другими словами, если файл с именем bar когда-то назывался foo, то git log -p bar (без опции --follow) будет показывать историю файла только до того места, где он был переименован - он выиграл ' t показать историю файла, когда он был известен как foo. Использование git log --follow -p bar покажет всю историю файла, включая любые изменения в файле, когда он был известен как foo.

14 голосов
/ 15 сентября 2015

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

git blame <filename>

14 голосов
/ 20 октября 2014

Вы можете выполнить

git status -s

Это покажет имя измененного файла, а затем, скопировав путь к нужному файлу, вы сможете увидеть изменения, используя git diff

git diff <filepath + filename>
4 голосов
/ 28 февраля 2018

вы также можете попробовать

git show <filename>

Для коммитов git show покажет сообщение журнала и текстовую разницу (между вашим файлом и версией файла с фиксацией).*

Вы можете проверить git show Documentation для получения дополнительной информации.

2 голосов
/ 02 мая 2019

для отображения сведений о коммитах только для определенных изменений файла,

git log --follow file_1.rb

для отображения различий между коммитами для одного и того же файла,

git log -p file_1.rb

для отображения только коммитов и их сообщений1007 *

git log --follow --oneline file_1.rb
0 голосов
/ 23 июля 2018

Полностью согласен с @Greg Hewgill

И если ваш путь включает пробелы, вы можете использовать, попробуйте добавить с апострофом ' или `

git diff 'MyProject / My Folder / MyПодпапка / file_2.rb '

0 голосов
/ 04 мая 2015

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

git difftool ./filepath

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

...