Создайте список измененных файлов / каталогов / и т.д.используя git между двумя тегами - PullRequest
6 голосов
/ 31 марта 2010

Мне нужно сгенерировать список изменений между двумя тегами в проекте, управляемом с помощью git, в частности, исходного кода Android. Этот список должен включать любые файлы / каталоги / и т. Д., Которые были отредактированы, перемещены, переименованы, удалены, созданы.

Любая помощь будет отличной. И если у вас есть способ сделать это по всему источнику Android одновременно ... даже лучше.

Ответы [ 2 ]

6 голосов
/ 31 марта 2010

Если вам нужно найти, какие файлы отличаются:

git diff --name-only <tag1> <tag2>

Если вам нужно найти все измененные файлы:

git log --name-only --pretty=format: <tag1>..<tag2> |
    grep -v '^$' | sort | uniq

--pretty=format: предназначен для подавления печати информации о коммитах и ​​печати только части diff. Обратите внимание, что в случае git log порядок <tag1> и <tag2> имеет значение.

1 голос
/ 31 марта 2010

Как я упоминаю в комментариях, "Как мне найти общие файлы, измененные между ветками git?" является основным решением здесь:

git log [--pretty=<format>] --name-only tag1..tag2

или

git diff --name-only tag1 tag2

(также упоминается в Гитологический рецепт )

НО: как упоминалось в " Как получить список каталогов, удаленных в моем git-репозитории? ", Git отслеживает только содержимое файлов, а не сами каталоги .

Чтобы включить информацию о каталогах, вам нужно начать играть с git diff-tree.

любой каталог, который был создан или удален, будет иметь 040000 во втором или первом столбце и 000000 в первом или втором столбце соответственно. Это «режимы» дерева записей для левой и правой записей.

Нечто подобное (согласно Чарльз Бейли ):

git diff-tree -t origin/master master | grep 040000 | grep -v -E '^:040000 040000'
...