Как удалить старую историю после запуска git filter-branch?

Предположим, у меня есть такое дерево:

... -- a -- b -- c -- d -- ...
             \
              e -- a -- k

, и я хочу, чтобы оно стало просто

... -- a -- b -- c -- d -- ...

Я знаю, как прикрепить имя ветки к «e». Я знаю, что то, что я собираюсь сделать, изменит историю, и это плохо. Также я думаю, мне нужно использовать что-то вроде rebase или filter-branch. Но как именно - я заблудился.

Хорошо. Ситуация следующая: у меня сейчас довольно большое дерево (как это)

                 s -- p -- r   
                /
a -- b -- c -- d -- e --- g -- w
           \               \
            t -- p -- l     y -- k

, но в одном из моих первых коммитов (например, «b») я добавил бинарные файлы, что делает репо очень тяжелым. Я решил их забрать. Я сделал это с помощью filter-branch. И теперь у меня есть 2 длинные ветви коммитов, идентичных друг другу, начиная со второго коммита.

                 s -- p -- r   
                /
a -- b -- c -- d -- e --- g -- w
      \    \               \
       \    t -- p -- l     y -- k
        \
         \             s'-- p'-- r'  
          \           /
           b'-- c'-- d'-- e'--- g'-- w'
                 \               \
                  t'-- p'-- l'    y'-- k'

где b '- это коммит без бинарного файла в нем. Поэтому я не могу выполнить слияние. Я не хочу, чтобы все это дерево в истории дублировалось.

17
задан Brian Tompsett - 汤莱恩 24 July 2015 в 16:45
поделиться