Я просто удалил неправильную ветку с некоторыми экспериментальными изменениями, которые мне нужны с git branch -D branchName
.
Как восстановить ветку?
Я просто удалил неправильную ветку с некоторыми экспериментальными изменениями, которые мне нужны с git branch -D branchName
.
Как восстановить ветку?
Вы можете использовать git reflog, чтобы найти SHA1 последнего фиксации ветки. С этого момента вы можете воссоздать ветку с помощью
git branch branchName <sha1>
Изменить: Как сообщает @seagullJS, команда branch -D
сообщает вам sha1, поэтому, если вы еще не закрыли терминал, это станет очень легко. Например, это удаляет, а затем немедленно восстанавливает ветвь с именем master2
:
[email protected] /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba). <-- This is the SHA1 we need to restore it!
[email protected] /C/MyRepo (master)
$ git branch master2 130d7ba
Если вы знаете последний SHA1 ветки, вы можете попробовать
git branch branchName <SHA1>
Вы можете найти SHA1, используя git reflog
, описанный в решении здесь.
Если вы еще не нажали удаление, вы можете просто сделать:
$ git checkout deletedBranchName
Если вы только что удалили ветку, вы увидите что-то вроде этого в терминале:
Deleted branch branch_name(was e562d13)
Чтобы восстановить ветвь, используйте:
git checkout -b <branch_name> <sha>
, например:
git checkout -b branch_name e562d13
Сначала: создайте резервную копию всей директории, включая каталог .git.
Во-вторых: вы можете использовать git fsck --lost-found
для получения идентификатора потерянных коммитов.
В-третьих: rebase или слияние с потерянной фиксацией.
В-четвертых: всегда думайте дважды, прежде чем использовать -D или -force с помощью git:)
Вы также можете прочитать это хорошее обсуждение о том, как восстановить эту ошибку.
РЕДАКТИРОВАТЬ: Кстати, не запускайте git gc
(или разрешайте ему запускать сам по себе, т.е. не запускать git fetch
или что-либо подобное), или вы можете потерять свои фиксации навсегда.
Спасибо, это сработало.
git branch new_branch_name
sha1
git checkout new_branch_name
//может видеть мои старые проверенные файлы в моей старой ветке