Git: изменить одну строку в файле для полной истории

Когда я запустил репозиторий git, я совершил несколько файлов в качестве первоначальной фиксации. Теперь многие коммиты позже, я заметил, что я включил в эти файлы строку с информацией, которую я не хочу публиковать (в отличие от остальной части кода). Поэтому я хочу удалить/изменить эту строку и сохранить остальные кода.

Поиск вокруг я нашел это решение: вставьте пустую фиксацию в качестве первоначальной фиксации (описанной здесь: Вставьте фиксацию перед фиксацией корня в Git?), сделайте переформатировать его, а затем отредактировать старую первую фиксацию с помощью поправки. К сожалению, во время rebase возникают многие конфликты с жестким слиянием (как описано здесь: git: разрешение конфликтов, вызванных rebase).

Есть ли другой способ решить мою проблему или нужно переустанавливать и редактировать все конфликты вручную?

Заранее спасибо:)

TIBO

27
задан 25 авг. '11 в 20:52
источник поделиться
3 ответов

Здесь команда, которая удалит строку нарушения из истории файлов во всех ваших ветвях:

git filter-branch --tree-filter 'sed -i "/sensitive information/ d" filename' -- --all

Это проверяет каждую ревизию, запускает на ней команду sed, а затем возвращает эту ревизию.

Команда sed в этом случае соответствует строкам, содержащим шаблон sensitive information в файле с именем filename, и удаляет эти строки.

Примечание: хорошо, если у вас есть резервная копия, и сначала попробуйте sed script, чтобы убедиться, что он делает то, что вы хотите, потому что для длительной истории может потребоваться довольно много времени.

35
ответ дан 26 авг. '11 в 1:39
источник

Я сделал эту команду, которая не выдает ошибку, когда файл не существует:

 filename=./path/to/your/filename
 filter=your_regex_here

 git filter-branch --tree-filter 'test -f $filename && sed -i.bak "/$filter/d" $filename  || echo "skipping file"' -- --all
4
ответ дан 01 июля '16 в 0:37
источник

Вы можете посмотреть git filter-branch

Примеры в ссылке должны помочь вам: http://git-scm.com/docs/git-filter-branch

1
ответ дан 25 авг. '11 в 21:14
источник

Другие вопросы по меткам или Задайте вопрос