Ошибка:
Я git rebase -i --root
редактировал свою ветку, невежественно думая, что могу переформулировать первую фиксацию, отличную от основной (представление по умолчанию GitHub для Windows - это сравнение с мастером, скрывающее его целиком).
Я отрастил бороду из Кремниевой долины, в то время как 900+ коммитов загрузились в Sublime. Выйдя без изменений, я зарядил батарею, а затем приступил к бритью, поскольку все 900+ отдельных коммитов небрежно перенастроили - сбросив время их фиксации на текущее время.
Решив превзойти Git и сохранить исходное время, я удалил этот локальный репозиторий и повторно клонировал его с пульта.
Теперь он повторно добавил в мастер последнюю ненужную фиксацию, которую я хотел удалить, поэтому поступил так.
Исчерпывающие варианты:
Я не хотел git revert
- это создаст дополнительную фиксацию, что даст Git преимущество.
git reset --hard HEAD
ничего не сделал, после проверки reflog
последним и единственным HEAD
был клон - Git побеждает.
Чтобы получить самый последний SHA, я проверил удаленный репозиторий на github.com - небольшая победа.
Подумав, что git reset --hard <SHA>
сработало, я обновил другую ветку до master и 1 ... 2 ... пуф! коммит вернулся - Git побеждает.
Возвращаюсь к мастеру, пора попробовать git rebase -i <SHA>
, а затем удалить строку ... безрезультатно, к сожалению. "Если вы удалите здесь строчку, КОГДА БУДЕТ УТЕРЯНЫ". Ах ... замалчивается новая функция troll the n00b в Примечания к выпуску 2.8.3.
Решение:
git rebase -i <SHA>
, затем d, drop = remove commit
.
Чтобы проверить, я перешел в другую ветку, и вуаля - никакой скрытой фиксации для получения / извлечения от мастера.
https://twitter.com/holman/status/706006896273063936
Хороший день для тебя.
person
Leo
schedule
25.05.2016
cherry-pick
иdelete
одну фиксацию, которая могла произойти некоторое время назад. - person Chris   schedule 03.05.2015git rebase -i HEAD~10
действительно отвечает на вопрос, поскольку позволяет произвольно выбирать коммиты для удаления. Git применяет коммиты в указанном вами диапазоне по очереди, игнорируя коммиты, удаленные из журнала. Я использовал эту команду сегодня, чтобы избавиться от второй и третьей из последних коммитов в моем репо, сохранив при этом верхнюю. Я согласен с тем, что ни один из других ответов не является удовлетворительным. - person MST   schedule 18.06.2015git reset --soft HEAD~1
это именно то, что вам нужно. В таком случае вы отмените фиксацию и сохраните свою работу.reset --hard
полностью удалит фиксацию. - person sergpank   schedule 18.05.2021