Разница между git -log и git -watchanged?
- Учитывая этот ответ на другой вопрос, и
- учитывая, что справочные страницы для git-log и git-whatloaded говорят, что они извлекают из git-rev-list...
... в чем же разница между двумя командами? Зачем им обоим?
Ответы
Ответ 1
В коммите 52f425e1 (30 августа 2013 г.) упоминается:
Поощряйте новых пользователей вместо использования log
. В наши дни эти команды унифицированы и имеют разные значения по умолчанию.
" git log
" позволял вам просматривать только сообщения журнала и никаких различий, когда он был добавлен в начале июня 2005 года. Только в начале апреля 2006 года команда научилась принимать параметры различий.
Из-за этого whatchanged
пользователи, как правило, использовали " whatchanged
", которое уже существовало с середины мая 2005 года, и поддерживало параметры diff.
Вот что теперь скажет новая версия git whatchanged
страницы git whatchanged
:
Новым пользователям рекомендуется использовать git log
. Команда whatchanged
по сути такая же, как и в git log
но по умолчанию показывает вывод whatchanged
в необработанном формате и пропускает слияния.
Команда сохраняется в основном по историческим причинам; пальцы многих людей, которые изучили Git задолго до того, как git log
был изобретен путем чтения списка рассылки ядра Linux, обучены его печатать.
Что касается комментариев torek, эквивалент git log
будет:
git log --raw --no-merges
(Что бы избежать этого вопроса)
Ответ 2
В своей простейшей форме "git log" показывает каждую фиксацию (sha, author, date, message), тогда как "git whatchanged" показывает измененные файлы commit plus. Например:
$ git log
commit db9f525674443314a9822a6bd6c3acce49c8f8d6
Author: ...
Date: Wed Apr 4 22:55:33 2012 -0700
Add more
commit eed0b7aa3cad5d985b5f1d52f3c0605339c119a1
Author: ...
Date: Tue Apr 3 20:36:04 2012 -0700
del bing/one.c
но для whatchanged:
$ git whatchanged
commit db9f525674443314a9822a6bd6c3acce49c8f8d6
Author: ...
Date: Wed Apr 4 22:55:33 2012 -0700
Add more
:100644 100644 f2e4113... d415016... M bar.c
commit eed0b7aa3cad5d985b5f1d52f3c0605339c119a1
Author: ...
Date: Tue Apr 3 20:36:04 2012 -0700
del bing/one.c
:100644 000000 e69de29... 0000000... D bing/one.c
Существует множество вариантов для изменения вывода каждой команды. Например, git whatchanged -p 'показывает изменения в форме diff/patch.
Ответ 3
Я не совсем согласен. Вы можете увидеть слияние файлов с изменением log
?
Я не нашел эту функциональность и очень полезен для того, чтобы знать, когда файл был объединен в какой-либо ветки, например:
file c.c
в branch1
имеет дату фиксации с 1/1/2012, если вы выполняете слияние с branch2
, а позже захотите следовать за днем, когда это сообщение было введено в branch2
, может git log
помощь? Если у вас есть слияния, вы можете искать в них git whatchanged -m sha1