git Как вывести список всех переименований файлов и каталогов между двумя коммитами - PullRequest
0 голосов
/ 05 мая 2020

Я пишу сценарий, использующий git. Ему необходимо знать старый путь к файлу и новый путь к файлу для всех переименованных каталогов и файлов.

Пример того, что я хочу сделать: git diff --find-renames-only someGitHash someGitHash Тогда я хотел бы увидеть список вроде:

rename old/path/old-file-name.extension->new/path/new-file-name.extension

или

rename from source/README.md
rename to documentation/README.md

Или что-то в этом роде, если у него есть старое имя файла со старым путем к каталогу и новое имя файла с новым путем к каталогу для каждого.

Я возился и искал повсюду, пока что самое близкое, что я смог найти, это git diff --find-renames

git diff --find-renames дает мне данные, которые я хочу, но со слишком большим количеством данных для каждый файл. Это определенно не то, с чем я хочу разбираться и разбираться. Некоторые из репозиториев git, с которыми я работаю, могут иметь тысячи переименований файлов / папок ...

Пример:

...tons more data that I do not want to parse through
rename from source/README.md
rename to documentation/README.md
...tons more data including diffs of files before and after... 

this pattern continued for each file...

Как мне перечислить все переименования файлов и каталогов между двумя git фиксируется без дополнительных данных?

Любая помощь будет очень признательна, спасибо!

1 Ответ

2 голосов
/ 05 мая 2020
git log --name-status <start_commit>..<end_commit> | grep ^R

Это покажет вам историю переименований от самых новых к самым старым.

Результат выглядит следующим образом:

R100    the-5-min/.watchmanconfig       the-10-min/.watchmanconfig
R100    the-5-min/App.tsx       the-10-min/App.tsx
R085    the-5-min/app.json      the-10-min/app.json
R100    the-5-min/assets/examples/accordion.png the-10-min/assets/examples/accordion.png
R100    the-5-min/assets/examples/angular-gradient.png  the-10-min/assets/examples/angular-gradient.png

Первая буква - это тип изменения (см. - diff-filter для деталей различных типов изменений), а число - это степень сходства между коммитами. Первое имя файла в списке - это старое имя файла, второе имя файла - новое.

...