Просмотр истории изменений файла с помощью Git версий

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

Дошел до:

git log -- [filename]

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

Я пытаюсь сделать переход от MS SourceSafe, и это было просто right-clickshow history.

Ответ 1

Для этого я бы использовал:

gitk [filename]

или следовать имени файла прошлых переименований

gitk --follow [filename]

Ответ 2

Вы можете использовать

git log -p filename

чтобы git генерировать патчи для каждой записи журнала.

См

git help log

для большего количества опций - на самом деле это может сделать много приятных вещей:) Чтобы получить только разницу для конкретной фиксации, вы можете

git show HEAD 

или любую другую ревизию по идентификатору. Или используйте

gitk

для визуального просмотра изменений.

Ответ 3

git log --follow -p -- path-to-file

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

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

Ответ 4

Если вы предпочитаете оставаться в текстовом режиме, вы можете использовать tig.

Быстрая установка:

  • apt-get: # apt-get install tig
  • Homebrew (OS X): $ brew install tig

Используйте его для просмотра истории в одном файле: tig [filename]
Или просмотрите подробную историю репо: tig

Похож на gitk, но на основе текста. Поддержка цветов в терминале!

Ответ 5

git whatchanged -p filename также эквивалентно git log -p filename в этом случае.

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

Ответ 6

Пользователи SourceTree

Если вы используете SourceTree для визуализации своего репозитория (он бесплатный и неплохой), вы можете щелкнуть правой кнопкой мыши файл и выбрать Выбранный журнал

enter image description here

Дисплей (ниже) намного дружелюбнее, чем gitk, и большинство других перечисленных опций. К сожалению (в это время) нет простого способа запустить это представление из командной строки. В настоящее время CLI SourceTree просто открывает репозитории.

enter image description here

Ответ 7

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

git blame filename

или если вы хотите использовать мощный графический интерфейс вины:

git gui blame filename

Ответ 8

Сводка других ответов после прочтения их и игры немного:

Командой обычной команды будет

git log --follow --all -p dir/file.c

Но вы также можете использовать gitk (gui) или tig (text-ui), чтобы дать гораздо более понятные для человека способы взглянуть на него.

gitk --follow --all -p dir/file.c

tig --follow --all -p dir/file.c

В debian/ubuntu команда установки для этих прекрасных инструментов выглядит так, как ожидалось:

sudo apt-get install gitk tig

И в настоящее время я использую:

alias gdf='gitk --follow --all -p'

чтобы я мог просто набрать gdf dir, чтобы получить фокусную историю всего в подкаталоге dir.

Ответ 9

Добавьте этот псевдоним в свой .gitconfig:

[alias]
    lg = log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\n--abbrev-commit --date=relative

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

> git lg
> git lg -- filename

Выход будет выглядеть почти точно так же, как вывод gitk. Наслаждайтесь.

Ответ 10

В последнее время я обнаружил tig и нашел его очень полезным. Есть некоторые случаи, я бы хотел, чтобы он делал A или B, но большую часть времени он был довольно аккуратным.

В вашем случае tig <filename> может быть тем, что вы ищете.

http://jonas.nitro.dk/tig/

Ответ 11

Я написал git-playback для этой цели

pip install git-playback
git playback [filename]

Это позволяет отображать результаты в командной строке (например, git log -p), а также позволять вам выполнять каждую фиксацию с помощью клавиш со стрелками (например, gitk).

Ответ 12

Или:

gitx -- <path/to/filename>

если вы используете gitx

Ответ 13

Если вы хотите просмотреть всю историю файла, в том числе на всех других ветвях, используйте:

gitk --all <filename>

Ответ 14

Если вы используете графический интерфейс git (в Windows) в меню "Репозиторий", вы можете использовать "Визуализировать главную историю". Выделите фиксацию в верхней панели и файл в правом нижнем углу, и вы увидите разницу для этой фиксации в левом нижнем углу.

Ответ 15

С отличным Git Extensions вы переходите к точке в истории, где файл все еще существует (если он был удален, в противном случае просто перейдите в HEAD), перейдите на вкладку File tree, щелкните правой кнопкой мыши файл и выберите File history.

По умолчанию он следует за файлом через переименования, а вкладка Blame позволяет увидеть имя в данной версии.

Он имеет некоторые незначительные ошибки, например, показывая fatal: Not a valid object name на вкладке View при нажатии на удаление, но я могу жить с этим.: -)

Ответ 16

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

Возвращенным результатом будет список коммитов, которые изменили эту конкретную часть. Команда:

git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>

где upperLimit - начальный_строчный_номер, а нижний_конечный - конечный_линейный_файл файла.

Более подробная информация на https://www.techpurohit.com/list-some-useful-git-commands

Ответ 17

SmartGit:

  • В меню разрешено отображать неизменяемые файлы: просмотр/просмотр неизмененных файлов
  • Щелкните правой кнопкой мыши файл и выберите "Журнал" или нажмите "Ctrl-L"

Ответ 18

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

git diff --cached

Ответ 19

Если вы используете TortoiseGit, вы сможете щелкнуть правой кнопкой мыши по файлу и сделать TortoiseGit --> Show Log. В появившемся окне убедитесь, что:

  • 'Show Whole Project' не проверяется.

  • 'All Branches'.

Ответ 20

Вы можете использовать vscode с GitLens, это очень мощный инструмент. После установки GitLens перейдите на вкладку GitLens, выберите " FILE HISTORY и вы можете просмотреть его.

enter image description here

Ответ 21

git diff -U <filename> дает вам единый diff.

Он должен быть окрашен в красный и зеленый цвета. Если это не так, выполните сначала git config color.ui auto.

Ответ 22

Если вы используете eclipse с плагином git, у него есть отличное сравнение с историей. Щелкните правой кнопкой мыши файл и выберите "compare with" = > "history"