Как заставить git log показывать имена файлов, такие как svn log-v
журнал SVN имеет режим "- v", который выводит имена файлов, измененных в каждом коммите, например:
jes5199$ svn log -v
------------------------------------------------------------------------
r1 | jes5199 | 2007-01-03 14:39:41 -0800 (Wed, 03 Jan 2007) | 1 line
Changed paths:
A /AUTHORS
A /COPYING
A /ChangeLog
A /EVOLUTION
A /INSTALL
A /MacOSX
есть ли быстрый способ получить список измененных файлов в каждой фиксации в git?
7 ответов:
для полного пути к измененным файлам:
git log --name-onlyдля полных имен путей и состояния измененных файлов:
git log --name-statusдля сокращенных путей и diffstat измененных файлов:
git log --statесть еще много вариантов,проверить документы.
Примечание:
git whatchangedустарело, используйтеновые пользователи могут использовать git-log[1]. Этот
whatchangedкоманда по существу такая же, как git-log[1] но по умолчанию показывают необработанный формат diff выводит и пропускает слияния.команда хранится в основном по историческим причинам; пальцы многих люди, которые научились Git задолго до путем чтения Список рассылки ядра Linux обучены вводить его.
вы можете использовать команду
git whatchanged --statчтобы получить список файлов, которые изменились в каждой фиксации (вместе с сообщением фиксации).ссылки
git showЭто также отличная команда.вроде
svn diff, но вы можете передать ему идентификатор GUID фиксации и увидеть эту разницу.
Если вы хотите получить имена файлов только без остальной части сообщения фиксации вы можете использовать:
git log --name-only --pretty=format: <branch name>затем это можно расширить, чтобы использовать различные параметры, содержащие имя файла:
git log --name-status --pretty=format: <branch name> git log --stat --pretty=format: <branch name>одна вещь, чтобы отметить при использовании этого метода является то, что есть некоторые пустые строки в выходных данных, которые должны быть проигнорированы. Использование этого может быть полезно, если вы хотите видеть файлы, которые были изменены в локальной ветви, но еще не переданы в удаленную ветвь и нет никакой гарантии, что последний из пульта дистанционного управления уже был втянут. Например:
git log --name-only --pretty=format: my_local_branch --not origin/masterпокажет все файлы, которые были изменены в локальной ветви, но еще не объединены с главной ветвью на удаленном компьютере.
Я использую это на ежедневной основе, чтобы показать историю с файлы, которые изменили:
git log --stat --pretty=short --graphчтобы сократить его, добавьте псевдоним в свой
.gitconfigделаем:git config --global alias.ls 'log --stat --pretty=short --graph'
Я использую этот:
git log --name-status <branch>..<branch> | grep -E '^[A-Z]\b' | sort | uniqкоторый выводит только список файлов и их состояние (добавлено, изменено, удалено):
A sites/api/branding/__init__.py M sites/api/branding/wtv/mod.py ...
git diff --stat HEAD^!показывает измененные файлы и добавленные / удаленные подсчеты строк для последней фиксации (HEAD).мне кажется, что нет единой команды для получения краткого вывода, состоящего только из имен файлов и добавленных и удаленных строк для нескольких коммитов сразу, поэтому я создал свой собственный скрипт bash для этого:
#!/bin/bash for ((i=0; i<=; i++)) do sha1=`git log -1 --skip=$i --pretty=format:%H` echo "HEAD~$i $sha1" git diff --stat HEAD~$(($i+1)) HEAD~$i doneназываться например.
./changed_files 99чтобы получить изменения в сжатой форме отHEADдоHEAD~99. Можно направить например. кless.
Comments