Просмотр истории изменений файла с помощью управления версиями Git
как я могу просмотреть историю изменений отдельного файла в Git, полную информацию о том, что изменилось?
Я дошел до:
git log -- [filename]
который показывает мне историю фиксации файла, но как я могу получить содержимое каждого из изменений файла?
Я пытаюсь сделать переход от MS SourceSafe, и это раньше было просто right-click
→ show history
.
21 ответов
для этого я использую:
gitk [filename]
или следовать за именем файла мимо переименований
gitk --follow [filename]
можно использовать
git log -p filename
чтобы git генерировал исправления для каждой записи журнала.
посмотреть
git help log
для большего количества опций-на самом деле он может сделать много хороших вещей :) чтобы получить только разницу для конкретного фиксации, вы можете
git show HEAD
или любая другая редакция по идентификатору. Или использовать
gitk
для визуального просмотра изменений.
git log --follow -p -- file
это покажет весь история (включая историю переименований и изменения для каждого изменения).
другими словами, если файл с именем bar
когда-то называли foo
, потом git log -p bar
(без --follow
опция) покажет только историю файла до момента, когда он был переименован - он не будет показывать историю файла, когда он был известен как foo
. Используя git log --follow -p bar
показать всю историю файла, в том числе любые изменения в файле, когда он был известен как foo
. The -p
опция гарантирует, что различия включены для каждого изменения.
если вы предпочитаете оставаться текстовым, вы можете использовать Тиг.
Быстрая Установка:
-
apt-get:
# apt-get install tig
-
домашнее пиво (OS X):
$ brew install tig
используйте его для просмотра истории в одном файле:tig [filename]
Или просмотреть подробную историю РЕПО:tig
аналогично gitk
но текст на основе. Поддерживает цвета в терминале!
git whatchanged -p filename
эквивалентно git log -p filename
в этом случае.
вы также можете увидеть, когда определенная строка кода внутри файла была изменена с git blame filename
. Это распечатает короткий идентификатор фиксации, автора, метку времени и полную строку кода для каждой строки в файле.
Это очень полезно после того как вы нашли ошибку, и вы хотите знать, когда она была введена (или кто виноват).
пользователи SourceTree
Если вы используете SourceTree для визуализации вашего репозитория (это бесплатно и довольно хорошо), вы можете щелкнуть правой кнопкой мыши файл и выбрать Журнал Выбранный
дисплей (ниже) намного дружелюбнее, чем gitk и большинство других перечисленных опций. К сожалению (в это время) нет простого способа запустить это представление из командной строки - CLI SourceTree в настоящее время просто открывает репозитории.
чтобы показать, какая редакция и автор последней изменили каждую строку файла:
git blame filename
или если вы хотите использовать мощный GUI вины:
git gui blame filename
резюме других ответов после прочтения их и играть немного:
обычная команда командной строки будет
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
.
добавить этот псевдоним .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. Наслаждаться.
я писал git-воспроизведение именно с этой целью
pip install git-playback
git playback [filename]
это имеет преимущество как отображения результатов в командной строке (например,git log -p
), а также позволяя вам проходить через каждую фиксацию с помощью клавиш со стрелками (например,gitk
).
недавно я обнаружил tig
и нашел его очень полезным. Есть несколько случаев, когда я бы хотел, чтобы он делал A или B, но в большинстве случаев это довольно аккуратно.
для вашего случая, tig <filename>
может быть то, что вы ищете.
Если вы хотите увидеть всю историю файла, в том числе on все остальные ветки использовать:
gitk --all <filename>
Если вы используете Git GUI (в Windows) в меню репозитория, вы можете использовать "визуализировать историю мастера". Выделите фиксацию в верхней панели и файл в правом нижнем углу, и вы увидите разницу для этой фиксации в левом нижнем углу.
отличное Расширения Git, вы переходите к точке в истории, где файл все еще существовал (если он был удален, в противном случае просто перейдите к голове), переключитесь на щелкните правой кнопкой мыши на файле и выберите File history
.
по умолчанию он следует за файлом через переименования и Blame
вкладка позволяет увидеть имя в данной редакции.
Он имеет некоторые незначительные проблемы, как показывает fatal: Not a valid object name
на View
вкладка при нажатии на исправление удаления, но я могу жить с этим. :-)
ответ, который я искал, не был в этом потоке, - это увидеть изменения в файлах, которые я поставил для фиксации. т. е.
git diff --cached
вы также можете попробовать это, в котором перечислены коммиты, которые изменили определенную часть файла (реализован в git 1.8.4).
возвращаемый результат будет списком коммитов, которые изменили эту конкретную часть. Команда звучит так:
git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>
где upperLimit-это start_line_number, а lowerLimit-это ending_line_number файла.
Если вы используете TortoiseGit, вы должны иметь возможность щелкнуть правой кнопкой мыши по файлу и сделать TortoiseGit --> Show Log
. В появившемся окне убедитесь:
' Не проверять.
'' это.
- в меню включить отображение неизмененных файлов: просмотр / показать неизмененные файлы
- щелкните правой кнопкой мыши файл и выберите " Log "или нажмите" Ctrl-L"
git diff -U <filename>
дать вам единый дифф.
Он должен быть окрашен в красный и зеленый. Если это не так, запустите: git config color.ui auto
первый.
Если вы используете eclipse с плагином git, он имеет отличный вид сравнения с историей. Щелкните правой кнопкой мыши файл и выберите " сравнить с "=> "История"