Я знаю, что это необычно, но один из моих репозиториев git, который действует как репозиторий «собери все», становится слишком большим, и я хотел бы разделить его на две части, на repoA
и repoB
.
Я нашел один способ разделения в "разветвлении подкаталога репозитория на GitHub и превращении его в часть моего собственного репозитория", однако это говорит только о разделении, я хочу, чтобы история также была разделена, поэтому repoA
будет содержать только историю repoA
, а не repoB
, и наоборот. В противном случае я получу два репозитория, но удвою размер из-за всей истории, которую он хранит.
ОБНОВЛЕНИЕ:
Благодаря тому, что @ElpieKay указал на git filter-branch
(вместо git clean
, которое я нашел при поиске с помощью «git purge»), я нашел это:
https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/
это именно то, что я искал. Однако есть еще один вопрос — как удалить repoA
содержимое из repoB
? То есть при разделении repoA
мне нужно сделать только,
git filter-branch --prune-empty --subdirectory-filter sub1/sub2/sub3 master
Итак, в repoB
, как удалить sub1/sub2/sub3
, сохранив при этом все остальное?
Более того, эта команда в приведенном выше документе,
git remote set-url origin https://github.com/USERNAME/NEW-REPOSITORY-NAME.git
Когда я попробовал это, он только обновил URL-адрес fetch
, а push
все еще указывает на старый. Что мне не хватает?
git filter-branch
дважды. Один для удаления repoA из истории, а другой для удаления repoB. Будут созданы две переписанные истории. - person ElpieKay   schedule 27.07.2017