Git отменить локальное отделение удалить - PullRequest
330 голосов
/ 26 октября 2010

Я только что удалил неправильную ветку с некоторыми экспериментальными изменениями, которые мне нужны с git branch -D branchName.

Как восстановить ветку?

Ответы [ 6 ]

636 голосов
/ 26 октября 2010

Вы можете использовать git reflog , чтобы найти SHA1 последнего коммита ветви.С этого момента вы можете воссоздать ветку, используя

git branch branchName <sha1>

Edit: Как говорит @seagullJS, команда branch -D сообщает вам sha1, поэтому, если вы не закрылиТерминал все же становится очень легко.Например, это удаляет, а затем немедленно восстанавливает ветку с именем master2:

user@MY-PC /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba).    <-- This is the SHA1 we need to restore it!

user@MY-PC /C/MyRepo (master)
$ git branch master2 130d7ba
47 голосов
/ 26 октября 2010

Если вам известен последний SHA1 ветви, вы можете попробовать

git branch branchName <SHA1>

. Вы можете найти SHA1, используя git reflog, описанный в решении здесь .

28 голосов
/ 14 января 2014

Если вы еще не нажали удаление, вы можете просто сделать:

$ git checkout deletedBranchName
19 голосов
/ 19 августа 2016

Если вы только что удалили ветку, вы увидите что-то вроде этого в вашем терминале:

Deleted branch branch_name(was e562d13)
  • , где e562d13 - уникальный идентификатор (он же хеш "SHA" или "хэш")"), с этим вы можете восстановить удаленную ветвь.

Чтобы восстановить ветвь, используйте:

git checkout -b <branch_name> <sha>

например :

git checkout -b branch_name e562d13 
3 голосов
/ 07 февраля 2017

Спасибо, это сработало.

git branch new_branch_name sha1

git checkout new_branch_name

// можно увидеть мои старые проверенные файлы в моей старой ветке

3 голосов
/ 26 октября 2010

Первый: резервное копирование всего каталога, включая каталог .git.

Второй: вы можете использовать git fsck --lost-found для получения идентификатора потерянных коммитов.

Третий: rebase илислиться с потерянным коммитом.

Четвертый: всегда дважды подумать, прежде чем использовать -D или --force с git:)

Вы также можете прочитать это хорошее обсуждениедля восстановления после такого рода ошибок.

РЕДАКТИРОВАТЬ: Кстати, не запускайте git gc (или не позволяйте ему запускаться самостоятельно - т.е. не запускайте git fetch или что-то подобное), или выможет потерять ваши коммиты навсегда.

...