Как удалить сиротский коммит из истории git - PullRequest
0 голосов
/ 05 сентября 2018

В настоящее время я работаю с устаревшей кодовой базой, и у меня проблема с производительностью инструментов git GUI.

Полагаю, это происходит из-за странного дерева коммитов в самом начале проекта.

git commits history tree

Как удалить a842c15 или 1e02e18 коммитов (у обоих нет родителей)?

Мне нужна только одна initial точка.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Вы можете просто перейти на эту ветку, набрав git checkout a842c15 или git checkout 1e02e18
после этого типа
git reset --hard HEAD~1 это удалит коммит и пойдет на 1 шаг вперед.
Наконец, перейдите в главную ветвь или другое на git checkout branch_name

0 голосов
/ 05 сентября 2018

У вас есть несколько корней. Это не то же самое, что осиротевшие коммиты. Многократные корни неудачны, но Git предназначен для правильной работы с ними, и они не должны вызывать проблем с производительностью. Само ядро ​​Linux имеет несколько.

Единственный способ удалить лишние коммиты - это полностью переписать всю историю репозитория, уничтожить его и заменить его новой фальсифицированной историей, которая не содержит нежелательной истории. Вы можете сделать это, создав прививку и запустив историю через git filter-branch.

Точный выбор трансплантата неуловим. Глядя на график, я не вижу очевидного выбора, поэтому я не уверен, какой взяточник я мог бы предложить, чтобы история выглядела так, как вы этого хотите.

Если бы это был я, я бы жил с множественными корнями. У меня есть личные репозитории с гораздо большим количеством корней, может быть, с 20 или 30 корнями, и у меня нет проблем с медлительностью ни с одним из моих инструментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...