Что я хочу сделать .
Все файлы в моем репо находятся в одной папке, но эта папка содержит другие файлы, исключенные .gitignore
.Я хочу реорганизовать (программно) эти файлы только из репозитория (а не игнорируемых) в разные папки в соответствии с их расширениями.
Пример. .
Допустим, у меня есть папка /project
с:
a.py
, b.py
, c.py
, 1.png
, 2.png
, 3.png
, где
- a.py
, b.py
, 1.png
, 2.png
в репозитории git;
- c.py
, 3.png
не в репозитории git, т.е. они игнорируютсясогласно правилам в .gitignore
.
В конце я хочу иметь две подпапки:
- /project/scripts
, содержащие a.py
и b.py
;
- /project/images
, содержащие 1.png
и 2.png
;
, в то время как
- /project
все еще содержит c.py
и 3.png
.
Некоторые идеи .
Я прочитал документацию по команде git mv
, но не увидел, что могу фильтровать файлы напрямую из команды git mv
.
Одна из идей - перечислить эти файлы изсделайте репо, используя git ls-files
, затем перенаправьте его на git mv
.Но я подозреваю, что это так же плохо, как трубопровод ls
и mv
.
В крайнем случае, я мог бы использовать цикл for
, но я уверен, что кто-то там знает лучше.На самом деле, я не уверен, что это обойдёт проблему передачи ls
с mv
.
форматом имен файлов .
Имена файлов не очень экзотичны: кроме их расширений (.py
, .png
) они содержат только буквенно-цифровые символы [a-zA-Z0-9]
, дефисы -
и подчеркивания _
.Так что пикирование git ls-files
с git mv
, возможно, не конец света.