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" для решения.

Также помните, что с нелинейной историей понятие, которое в последний раз менял файл, не однозначно.