Можно ли использовать git filter-branch с грязным рабочим каталогом? - PullRequest
0 голосов
/ 01 июля 2019

По независящим от меня причинам я работаю с репозиторием, в котором есть много копий схожего контента (небольшая ОС). Это означает, что, хотя размер репо достаточно мал, рабочий каталог занимает несколько часов для проверки в моей системе.

Конкретные выполняемые задачи: git replace --graft, чтобы объединить линейные истории, затем git filter-branch --tag-filter cat -- master, чтобы сделать изменение постоянным.

Моя проблема в том, что для ответвления фильтра требуется чистая рабочая копия (например, сгенерированная git checkout . или стандартным git clone <URL>). Это увеличивает время работы до нескольких часов, что нежелательно. Есть ли более быстрый способ сделать это? Фактическая перезапись занимает около 30 секунд (все BLOB-объекты остаются неизменными, только меняются указатели).

Ответы [ 2 ]

1 голос
/ 01 июля 2019

Вы можете создать голого клона и выполнить всю фильтрацию там:

git clone --bare source bare
cd bare
git filter-branch master   # this is a no-op here, but you get the idea
1 голос
/ 01 июля 2019

Некоторые идеи.

1) спрятать локальные изменения, а затем вытащить их обратно, когда вы закончите.

2) создайте новый клон, но используйте git clone --reference, чтобы ускорить его.

...