Git выход журнала, такой как svn ls -v
Есть ли способ сделать git дать мне вывод, например svn ls -v. В основном список каждого файла и кто последний отредактировал этот файл? Вот так:
filea.txt Someone Else
fileb.txt Another Person
Может быть, даже с SHA для идентификации фиксации произошли изменения?
Ответы
Ответ 1
Это не очень естественный вопрос, задаваемый в git, но вы, вероятно, можете достичь чего-то вроде того, что хотите, с чем-то вроде этого.
for a in $(ls); do git log --pretty=format:"%h%x09%an%x09%ad%x09$a" -1 -- "$a"; done
Это проходит через каждый файл в текущем каталоге и выполняет git log
, чтобы найти последнее сообщение, которое повлияло на него.
Он не очень эффективен, так как он ищет историю git для каждого файла и не прилагает никаких усилий для повторного использования результатов предыдущих поисков. Это, однако, однострочный.
Ответ 2
Вы хотите поиграть с git log и его хорошими форматами. Вот пример, который не полностью касается того, что вы хотите, но должен помочь вам:
git log --pretty=format:"%h: %s -- %an"
Печать
...
58a2e46: Added readme for github. -- DylanFM
...
Ответ 3
Вопрос: зачем вам это нужно? В настоящее время git отсутствует одиночная команда, которая бы выполняла эквивалент "svn ls -v", и вам нужно было бы сделать немного скриптов: идея "git log -1 - $filename", я думаю, самая простая решение (в виде числа строк script для записи); если бы это было возможно, это, вероятно, будет "w21 > винить".
Но я предполагаю, что есть альтернативный способ решить вашу проблему, которую вы использовали "svn ls -v" для решения.
Также помните, что с нелинейной историей понятие, которое в последний раз менял файл, не однозначно.