Git - история файла

У меня есть шаблон рабочего процесса, который возникает довольно часто, и я задавался вопросом, как этого добиться в git.

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

Как мне проверить историю отдельных файлов и оформить заказ и сравнить этот ранее зафиксированный файл?


person AlexanderDavidson    schedule 04.12.2018    source источник
comment
Вы пробовали простой git log -- <filepath>? Может быть достаточно, в зависимости от сложности того, что вы ищете.   -  person RomainValeri    schedule 04.12.2018
comment
Да, я могу увидеть журнал, но я просто хочу быстро взглянуть на этот файл, например, при фиксации dea11dfddc6512c0c09eabf20622ac5f9df8c731   -  person AlexanderDavidson    schedule 04.12.2018
comment
О ^^ Значит, ты тоже можешь сделать git checkout dea11df -- <filepath>. Однако не забудьте заранее зафиксировать все ожидающие изменения в файле. Затем, если необходимо, вы вернете свой файл в его фактическое состояние с помощью git checkout -- <filepath>.   -  person RomainValeri    schedule 04.12.2018
comment
stackoverflow.com/search?q=%5Bgit-log%5D+file   -  person phd    schedule 04.12.2018
comment
Обратите внимание, что технически Git не имеет историю файлов. У него просто есть история, которая на самом деле состоит из всех коммитов. Каждая фиксация представляет собой полный снимок, поэтому, если вы запрашиваете у Git историю файла X, Git просматривает график фиксации в обратном направлении, по одной паре фиксации за раз, сравнивая два снимка. Если снимок $ OLDER и снимок $ NEWER имеет различия в X, то Git объявляет, что $ NEWER изменил X.   -  person torek    schedule 04.12.2018
comment
Следовательно, вместо просмотра истории файла X вы просматриваете подмножество всей истории, в которой X изменился с $ OLDER на $ NEWER. Это похоже на то же самое, но для --follow это усложняется.   -  person torek    schedule 04.12.2018


Ответы (2)


Если вы хотите посмотреть простую историю файла (то есть, какие коммиты изменили файл):

git log (filename)

например git log testdir/test.py


Чтобы получить подробную историю файла (включая diff), добавьте -p (сокращение от --patch):

git log -p (filename)
git log --patch (filename)

Для отображения изменения файла в фиксации:

git show (SHA Hash) (filename)
person ik1ne    schedule 04.12.2018

Вы можете сделать git diff для конкретного файла: https://git-scm.com/docs/git-diff Хотя гораздо проще использовать некоторые инструменты IDE (IntelliJ, Eclipse и т. д.) или инструменты графического интерфейса git (gitk, SourceTree, Gitkraken), которые также выполняют различие / сравнение между версиями файлов.

person Hubidubi    schedule 04.12.2018
comment
Печатал это тоже, Bitbucket также имеет очень простой наблюдатель за различиями файлов! - person Wimanicesir; 04.12.2018