Я просто удалил не ту ветку с некоторыми экспериментальными изменениями, которые мне нужны git branch -D branchName
.
Как мне восстановить ветку?
Я просто удалил не ту ветку с некоторыми экспериментальными изменениями, которые мне нужны git branch -D branchName
.
Как мне восстановить ветку?
Ответы:
Вы можете использовать git reflog, чтобы найти SHA1 последнего коммита ветви. С этого момента вы можете воссоздать ветку, используя
git branch branchName <sha1>
Редактировать: Как говорит @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
git branch branchName origin/branchName
Если вы только что удалили ветку, вы увидите что-то вроде этого в своем терминале:
Deleted branch branch_name(was e562d13)
- где e562d13 - это уникальный идентификатор (он же SHA или хэш), с помощью которого вы можете восстановить удаленную ветку.
Чтобы восстановить ветку, используйте:
git checkout -b <branch_name> <sha>
например :
git checkout -b branch_name e562d13
Первое: создайте резервную копию всего каталога, включая каталог .git.
Второе: вы можете использовать git fsck --lost-found
для получения идентификатора потерянных коммитов.
Третье: перебазирование или слияние с потерянным коммитом.
Четвертое: всегда дважды подумайте, прежде чем использовать -D или --force с git :)
Вы также можете прочитать это хорошее обсуждение того, как исправить ошибку такого рода.
РЕДАКТИРОВАТЬ: Между прочим, не запускайте git gc
(или не позволяйте ему запускаться самостоятельно - т.е. не запускайте git fetch
или что-то подобное), иначе вы можете потерять свои коммиты навсегда.
Спасибо, это сработало.
git branch new_branch_name
sha1
git checkout new_branch_name
// могу видеть мои старые проверенные файлы в моей старой ветке
Следуй этим шагам:
1: введите:
git reflog show
Это отобразит всю историю коммитов, вам нужно выбрать sha-1, который имеет последний коммит, который вы хотите вернуть
2: создайте имя ветви с выбранным вами идентификатором Sha-1 , например: 8c87714
git branch your-branch-name 8c87714