2015-08-06 2 views
1

У меня есть repo personal_stuff.git, который я использовал для хранения целого ряда ранних проектов, возможно, не совсем.Git: удалить нерелевантные фиксации из истории после разделения поддерева

Время от времени один из них взлетает, и мне нужно разделить подпапку от personal_stuff/coolnewthing на свой собственный coolnewthing.git репо.

Для этого я использую

git subtree split -P personal_stuff/coolnewthing -b coolnewthing

, а затем вытащить новую ветвь из другого нового каталога мерзавца через:

git pull ../../../../personal_stuff coolnewthing

Это прекрасно работает, но у меня есть все эти коммиты в моей истории связаны с файлами, которые больше не существуют.

Как отфильтровать их и сохранить только фиксации, относящиеся к файлам, которые у меня есть?

+1

вы можете использовать «мерзавец перебазироваться -i» –

+0

не уверен, если я понимаю документы, но я не добавляя ветвь функции к основной, - я делаю наоборот. Это все еще применяется? – tetris11

+1

переход на новую ветку сделать ** git rebase -i HEAD ~ <количество попыток вы хотите очистить> ** и использовать интерактивное меню переадресации. Решение, данное @joran, кажется хорошим использованием. –

ответ

1

Вы можете сделать новый клон из исходного репозитория и выберите новый корневой каталог для нового локального репозитория

git clone <url-to-personal_stuff.git> coolnewthing 
cd coolnewthing 
git filter-branch --subdirectory-filter coolnewthing 

Примечания: происхождение этого нового локального репозитория еще url-to-personal_stuff.git так что вам нужно изменить происхождения, прежде чем нажать

git remote set-url origin <url-to-coolnewthing.git> 
+0

Является ли это лучше, чем разделение поддерева? метод, но я уже отделил свой подкаталог. 'cd coolnewthing, git filter-branch --subdirectory-filter. /' говорит мне, что 'refs/heads/master не изменяется' – tetris11

+1

вам нужно запустить' git filter-branch --subdirectory-filter' с верхнего уровня – joran

+0

Я, но 'coolnewthing' уже является собственным репо, поэтому он не может фильтровать' personal_stuff' для coolnewthing. Думаю .... – tetris11