Я ищу простую git
команду, которая предоставляет красиво отформатированный список всех файлов, которые были частью фиксации, предоставленной хешем (SHA1), без посторонней информации.
Я пытался:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Хотя в нем перечислены файлы, он также включает в себя нежелательную информацию о различиях для каждого.
Есть ли другая git
команда, которая предоставит только список, который я хочу, чтобы я мог избежать анализа его из git show
вывода?
git log --until 2013-05-21 --pretty="short" --name-only
с хорошим эффектом.n
коммитов доmaster
:git diff-tree --name-status -r @{3} master
git diff --name-only master
- Вывести ВСЕ измененные файлы на текущую ветку, сравнивая с основной веткой.Ответы:
Предпочтительный способ (потому что это сантехническая команда; предназначена для программирования):
Другой способ (менее предпочтителен для сценариев, потому что это фарфоровая команда; предназначена для пользователя)
--no-commit-id
подавляет фиксации выходного идентификатора.--pretty
Аргумент задает пустую строку формата , чтобы избежать хлама в самом начале.--name-only
рассуждении показывает только имена файлов , которые были затронуты (Спасибо Hank). Используйте--name-status
вместо этого, если вы хотите увидеть, что случилось с каждым файлом ( D eleted, M odified, A dded)-r
Аргумент для рекурсии в суб-деревьяисточник
diff-tree
он не будет работать при просмотре корневого коммита--name-only
опции--name-status
даст более четкое резюме.git log --name-only -n 1 <hash>
Последний коммит будет:git log --name-only -n 1 HEAD~1..HEAD
git show
«фарфор» (предназначенный для пользователя) иgit diff-tree
«трубопровод» (предназначенный для программного использования, например, из сценариев). Интерфейс для первого может изменяться с течением времени (так что сопровождающие git могут упасть,--name-only
хотя я не думаю, что это произойдет ) по соображениям удобства использования, тогда как интерфейс для последнего будет поддерживаться максимально стабильным из соображений совместимости.Если вы хотите получить список измененных файлов:
Если вы хотите получить список всех файлов в коммите, вы можете использовать
источник
git ls-tree --name-only HEAD
(параметр <commit-ish> обязателен ; в данном примере это HEAD) у меня работает с git версии 1.6.4.3--no-commit-id
чтобы избежать печати SHA1, например так:git diff-tree --no-commit-id --name-only -r <commit-ish>
-r
/-t
опцию? Потому что diff-tree обрабатывает как измененные, так и добавленные файлы. Если вы хотите перечислить все новые (добавленные) файлы, используйтеgit diff-tree -r --name-only --no-commit-id --diff-filter=A <commit-ish>
Я просто предположу, что
gitk
это не желательно для этого. В этом случае попробуйтеgit show --name-only <sha>
.источник
--name-status
.gitk
на самом деле это достойный способ просмотра файлов и отображения файла, в котором находится diff. Например, код, проверяющий коммит монстра от сверстника.Я лично использую комбинацию --stat и --oneline с командой show :
Если вам не нравится / не нужна статистика добавления / удаления, вы можете заменить --stat на --name-only
источник
alias gits='git show --stat --oneline'
тогда онgits
сам показывает последние изменения (в HEAD), аgits b24f5fb
может быть использован для отображения изменений любой ревизии.git config --global alias.changes 'show --stat --oneline'
. Затем вы можете напечататьgit changes
(с необязательным коммитом) и получить вывод из первых примеров выше.git config --global alias.changes "show --stat --oneline"
git show
также работает для просмотра скрытых изменений: например,git show --stat --oneline stash@{1}
Вы также можете сделать
и вы можете просматривать различные коммиты, коммит сообщения и измененные файлы.
Введите q, чтобы получить ответ.
источник
git show 5944ad2a8b5 --name-only
чтобы перечислить имя конкретного коммитаНедавно мне нужно было перечислить все измененные файлы между двумя коммитами. Поэтому я использовал эту (также * nix-специфическую) команду
Обновление : или как Этан указывает ниже
Использование
--name-status
также будет включать изменения (добавлены, изменены, удалены и т. Д.) Рядом с каждым файломисточник
git diff --name-status START_COMMIT..END_COMMIT
то вам не нужен трейлинг|sort | uniq
.git diff --name-only START_COMMIT..END_COMMIT
git diff --name-only START_COMMIT..END_COMMIT | grep -v -e '**.png' -e '**.xml'
. Я хотел список изменений кода только для огромного PR, который добавил тысячи PNG и XML-макетов.Простейшая форма:
git show --stat (hash)
Это легче запомнить и даст вам всю необходимую информацию.
Если вы действительно хотите только имена файлов, вы можете добавить
--name-only
опцию.git show --stat --name-only (hash)
источник
Я пользуюсь поменял псевдоним довольно часто. Чтобы настроить это:
тогда:
Подобные команды, которые могут быть полезны:
источник
использование
Это покажет вам идентификатор фиксации, сообщение, файлы, которые были изменены, и были ли они изменены, созданы, добавлены или удалены. Что-то вроде команды «все в одном».
источник
Используя стандартную команду git diff (также хорошо для сценариев):
Если вы хотите также статус измененных файлов:
Это хорошо работает с коммитами слияния.
источник
попробуйте эту команду для имени и изменения номера строки
показывать только имена файлов
для получения последнего коммита, затем попробуйте эту команду
последний коммит с указанием имени файла и статуса файла, изменение, создание или удаление
или для всех
для более продвинутой информации журнала git прочитайте эту статью
https://devhints.io/git-log-format
https://devhints.io/git-log
источник
источник
в порядке, есть несколько способов показать все файлы в конкретном коммите ...
Чтобы уменьшить информацию и показать только имена файлов, которые передали, вы можете просто добавить
--name-only
или--name-status
пометить ..., эти флаги просто показывают вам имена файлов, которые отличаются от предыдущих коммитов, как вы хотите ...Таким образом, вы можете сделать
git diff
следующее--name-only
, с двумя хешами коммитов<sha0> <sha1>
, что-то вроде ниже:Я также создаю изображение ниже, чтобы показать все шаги, которые необходимо выполнить в этой ситуации:
источник
Я использую это, чтобы получить список измененных файлов между двумя наборами изменений:
источник
git diff --name-status .. | grep ^[^D] | cut -f2
Я люблю использовать
источник
Там также
git whatchanged
, который является более низким уровнем, чемgit log
Он выводит сводную информацию о коммите со списком файлов под ним с их режимами и, если они добавлены (
A
), удалены (D
) или изменены (M
);Дал бы что-то вроде:
Я знаю, что этот ответ на самом деле не соответствует «без посторонней информации», но я все же думаю, что этот список более полезен, чем просто имена файлов.
источник
whatchanged
вместо предоставления параметров.Мне это нравится:
источник
A
иD
файл (добавлять и удалять) статусы в обратном направлении, так как он показывает на диф от указанной фиксации к предыдущей фиксации, а не наоборот. Так и должно бытьgit diff --name-status <SHA1>^ <SHA1>
.Используйте простую однострочную команду, если вы хотите, чтобы список файлов был изменен во время последнего коммита:
источник
Список файлов, которые изменились в коммите:
Это не показывает сообщения журнала, лишние новые строки или любой другой беспорядок. Это работает для любого коммита, а не только для текущего. Не знаю , почему он не совсем был упомянут еще, так что я добавляю его.
источник
git diff SHA1^ SHA1
иgit show SHA1
.git show
также показывают сообщение оПоказать журнал.
COMMIT может быть пустым ("") или сокращенным sha-1 или sha-1.
Это перечислит только файлы, очень полезные для дальнейшей обработки.
источник
Нашел идеальный ответ на это:
Так что я могу знать
источник
Комбинация "
git show --stat
" (спасибо Райан) и пара команд sed должны урезать данные для вас:Это даст только список измененных файлов.
источник
Существует простой трюк для просмотра в виде списка файлов, просто добавьте
:
после хеша.Затем вы можете сверлить,
Если вы нажмете на файл, вы получите сырую версию файла; иногда это то, что вам нужно, если вы ищете только хорошую ссылку или ключевые куски кода (различия могут привести к беспорядку),
Единственным недостатком этого метода является то, что он не может легко показать дерево файлов.
источник
у меня отлично работает
источник
Я использую это, чтобы получить список измененных файлов в коммит слияния
или
источник
Если вы используете плагин oh-my-zsh и git, ярлык glg полезен.
источник
glg
выводы: намного больше. Извините за путаницу.Только список файлов (даже не зафиксировать сообщение):
Например, откройте все измененные файлы в вашем редакторе:
источник
Я думал, что поделюсь краткой информацией о моем псевдониме ... также я нахожу, что с помощью 'zsh' замечательно с git it все ключи ключей цветности все хорошо и сообщают, что вы хотите, чтобы ветвь всегда была, изменяя командную строку.
Для тех, кто освещает SVN, вы найдете это полезным: (это комбинация идей из разных потоков, я только беру кредит от знания, как использовать копирование / вставку)
источник
Это должно работать:
Это покажет, что не поставлено, а что поставлено.
источник