Как удалять окончательно commit в git?

Я верю в хранилище с двумя commits:

~/ttt$ echo 1 > a
~/ttt$ git init
Initialized empty Git repository in /home/jose/ttt/.git/
~/ttt$ git add .
~/ttt$ git commit -m "Primer"
[master (root-commit) fdcbd32] Primer
 1 file changed, 1 insertion(+)
 create mode 100644 a
~/ttt$ git branch inicio
~/ttt$ echo 22 >> a
~/ttt$ git add .
~/ttt$ git commit -m "Segundo"
[master 36cbf1c] Segundo
 1 file changed, 1 insertion(+)

Но я изменяю идею и решаю, что уже я не хочу второй commit. Я оставляю себе одинокого первого.

~/ttt$ git checkout inicio
Switched to branch 'inicio'
~/ttt$ git branch -D master
Deleted branch master (was 36cbf1c).
~/ttt$ git checkout master
error: pathspec 'master' did not match any file(s) known to git.

Хорошо, уже я загрузил эту секунду commit. Ваша ветвь степень магистра не существует и я не могу соглашаться в.... Ошибка. commit еще там, и возможно прибывать с hash.

~/ttt$ git checkout 36cbf1c
Note: checking out '36cbf1c'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 36cbf1c... Segundo
~/ttt$ cat a
1
22

Как я загружаю это себе совсем?
rm -rf .git это не действительный ответ, я хочу сохранить другой commit.

1
задан 25.02.2017, 01:04
0 ответов

Es un poco brusco borrar la rama master для устранения un solo commit, per su supongo que эра para darle énfasis al ejemplo.

Los commits huérfanos se los lleva el сборщик мусора в конечном итоге, без каких-либо проблем, без тэгов ramas ni теги que lo referencien.

Si quieres gatillar esa limpieza manualmente puedes hacer

git gc --prune=now

Hay un flag que puedes darle que es радикально, Сегун, Линус Торвальдс (изящная версия Linux Git) puede dañar seriamente un repo зависимость от дел:

git gc --prune=now --aggressive

PD: Encontré el hilo [114530] una vez, y menciona

Дата: среда, 5 декабря 2007 г. 22:09:12 -0800 (PST) Откуда: Линус Торвальдс Тема: Re: Git и GCC

Абсолютно. мерзавец -агрессивный в основном тупой. Это действительно только полезно для случая «Я знаю, у меня действительно действительно плохая пачка, и я хочу выбрось все плохие решения, которые я принял ".

3
ответ дан 03.12.2019, 16:51

Теги

Похожие вопросы