2016-05-04 4 views
0

Мне в основном нужно модифицировать пути в целом по истории git от src/... до src/main/java/..., фиксируя структуру каталогов для правил Maven.Изменить пути в git-истории от src/до src/main/java

Я пытаюсь найти рабочий образец git filter-branch --tree-filter, который сделает это.

Любые идеи?

+0

Вы действительно уверены, что хотите переписать историю, а не просто переименовать каталог в одном коммите? Переписывание всей истории ищет проблемы ... –

+0

Да, я. Мы мигрируем из Меркуриала в Гит. Таким образом, никто уже не использует мигрированный git-репозиторий, и у меня есть только возможность сделать такие изменения прямо сейчас. – Crazyjavahacking

ответ

2
git filter-branch --tree-filter 'mv src src_old && mkdir -p src/main && mv src_old src/main/java' -- --all 
+1

'-index-filter' будет более адаптирован здесь: нет необходимости проверять каждую ревизию, просто' git mv' каталог в индексе. Оба работают, но '--index-filter' работает быстрее. –

+0

Я думал об этом, но действительно ли это работает? 'git mv' не имеет опции' --cached', например 'git rm'. – Vampire

+0

Можете ли вы добавить пример с -index-фильтром, пожалуйста? – Crazyjavahacking