2016-01-28 4 views
6

Рассмотрим следующую задачу:Сквош первый N совершает истории мерзавца/сохранить остальное как

  • Частный проект, содержащий некоторые полномочия на ранних стадиях
  • Мы хотим идти с открытым исходным кодом
  • Нам нужны чтобы избавиться от учетных данных в истории
  • учетные данные в виде отдельных файлов, но в коде
  • Сложная история с несколькими слияниях, тянуть запросы и т.д.

Что я хочу сделать:

Сквош всех фиксаций от корня до произвольной фиксации с чистой государству один большой «Initial совершить».

Когда я делаю:

git rebase -i --root 

И давят первый совершает вместе:

pick Initial commit \ 
fixup dirty1  | 
fixup dirty2  | Squash these to one, to remove credentials. 
fixup dirty3  | 
fixup clean1  /
pick clean2 
pick clean3 
... 
... 

Я должен перебазироваться все и разрешить все конфликты слияния снова после этого.

Как я могу просто раздавить первые N коммитов без необходимости разрешать всю историю, включая конфликты слияния после фиксации N + 1.

+0

К сожалению, нет никакой возможности переписать всю историю. Это потому, что, когда clean2 получает свой новый родитель (сжатый фиксатор), его хеш изменяется. Это означает, что clean3 имеет нового родителя, который меняет свой хеш и т. Д. И т. Д. –

+0

Это было бы нормально. Мне просто не нужно было снова разрешать каждый конфликт слияния вручную. – MaxNoe

+0

Я рассмотрел ваш вопрос, но я считаю, что вам придется иметь дело с разрешениями конфликтов для каждой последующей фиксации в истории. Хотя я никогда не использовал его, я подозреваю, что это будет прецедентом для https://www.kernel.org/pub/software/scm/git/docs/git-rerere.html –

ответ

0

Вы можете использовать git-rerere для повторного использования тех же разрешений конфликтов.

Единственный недостаток - вы должны решить их еще один раз после, позволяющий повторить, прежде чем он сможет автоматически использовать разрешения.

Смежные вопросы