Как мне отредактировать начальный коммит в репозитории github? - PullRequest
5 голосов
/ 14 января 2010

Я работаю над репозиторием, который я разветвил, в котором автор взял грязный путь и поместил все свои зависимости в каталог lib / при первоначальном коммите. Обычно, если бы это не было начальным коммитом, я бы просто сделал интерактивную перебазировку и удалил весь коммит (если это все, что он сделал). Однако я понятия не имею, как бы я отредактировал / удалил первоначальный коммит. Есть ли способ, которым я могу отредактировать начальный коммит и удалить каталог lib, не затрагивая его?

EDIT

Я случайно наткнулся на ответ здесь: Могу ли я удалить начальный коммит из репозитория Git? в выбранном ответе. Вот что я получаю за то, что не ищу более тщательно.

1 Ответ

4 голосов
/ 14 января 2010
$ git filter-branch --parent-filter \
  'test $GIT_COMMIT = SECOND && echo "" || cat' \
  --tag-name-filter cat -- --all

где SECOND - это SHA-1 коммита, которым вы хотите стать новым корнем.

Выше предполагается, что все ветви используют одинаковые первый и второй коммиты. Если нет, вам нужно обобщить тест в родительском фильтре.

Обратите внимание, что это радикальная мера: она перепишет всю вашу историю и не позволит вам следовать репо автора. Кроме того, если вы перенесли свое репо на пульты, вам нужно будет заткнуть их с помощью git push -f.

...