Когда git-filter-branch
сделано, он проверяет новую ветвь ветви. Это обновит ваш рабочий каталог до чистого состояния. Файл, который вы хотели стереть из истории, был уничтожен. Резервирование заранее - это решение.
Если вы забыли создать резервную копию, вы все равно можете вернуть его обратно! Гит требует много времени, чтобы выбросить вещи, ваши первоначальные коммиты все еще там. После git-filter-branch
появится ветвь с именем original/refs/heads/master
(если вы отфильтровали мастер), который содержит оригинальные фиксации. Вы можете восстановить файл оттуда.
В общем, вы можете восстановить фильтры и переустановки с помощью git reflog
. Это журнал всех изменений HEAD
(т. Е. Вы выписываете или переустанавливаете или объединяете или фильтруете или ...). Например, после выполнения примера фильтра GitHub, git reflog
является ...
abaabaf (HEAD -> master, origin/master, origin/HEAD) [email protected]{0}: filter-branch: rewrite
8ef0c30 (refs/original/refs/remotes/origin/master, refs/original/refs/heads/master) [email protected]{1}: clone:
я могу использовать 8ef0c30
или [email protected]{1}
(то есть. Предыдущее место HEAD
) или original/refs/remotes/origin/master
или original/refs/heads/master
, чтобы вернуться туда, где все было до того, как фильтр бежал.
Создание резервной копии - это решение. – Schwern
Git - это прежде всего программа Unix. В Unix вы не интегрируете каждый сценарий в свой исполняемый файл. Вы делаете (надеюсь) небольшие отдельные программы, сотрудничающие для достижения вашей цели. – PSkocik