См. Изменения в конкретном файле с помощью git

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

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

Ответ 1

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

git diff file_2.rb

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

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

Ответ 2

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

Ответ 3

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

git log --follow -p -- file

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

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

Ответ 4

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

git blame <filename>

Ответ 5

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

git status -s

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

git diff <filepath + filename>

Ответ 6

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

git show <filename>

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

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

Ответ 8

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

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

git diff 'MyProject/Моя папка/Моя подпапка /file_2.rb'

Ответ 9

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

git log --follow file_1.rb

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

git log -p file_1.rb

перечислить только коммит и его сообщение,

git log --follow --oneline file_1.rb