Я только что удалил не ту ветку с некоторыми экспериментальными изменениями, которые мне нужны с 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
- person Florian Castellane; 22.09.2017
Если вы знаете последний SHA1 ветки, вы можете попробовать
git branch branchName <SHA1>
Вы можете найти SHA1 с помощью git reflog, описанного в решении --defect link--.
Если вы еще не нажали удаление, вы можете просто сделать:
$ git checkout deletedBranchName
Если вы только что удалили ветку, вы увидите в своем терминале что-то вроде этого:
Deleted branch branch_name(was e562d13)
- где e562d13 - уникальный идентификатор (также известный как «SHA» или «хеш»), с его помощью вы можете восстановить удаленную ветку.
Для восстановления ветки используйте:
git checkout -b <branch_name> <sha>
например:
git checkout -b branch_name e562d13
Следуй этим шагам:
1: Введите:
git reflog show
Это отобразит всю историю коммитов, вам нужно выбрать sha-1, у которого есть последний коммит, который вы хотите вернуть.
2: создайте имя ветки с выбранным вами Sha-1 ID, например: 8c87714
git branch your-branch-name 8c87714
Во-первых: сделайте резервную копию всего каталога, включая каталог .git.
Во-вторых: вы можете использовать git fsck --lost-found для получения идентификатора потерянных коммитов.
Третье: перебазировать или объединить потерянную фиксацию.
Четвертое: всегда дважды подумайте, прежде чем использовать -D или --force с git :)
Вы также можете прочитать это хорошее обсуждение того, как исправить ошибку такого рода.
РЕДАКТИРОВАТЬ: Кстати, не запускайте git gc (и не позволяйте ему запускаться самостоятельно - т.е. не запускайте git fetch или что-то подобное), иначе вы можете навсегда потерять свои коммиты.
Спасибо, это сработало.
git ветка новое_имя_ответки
sha1git checkout new_branch_name
// могу видеть мои старые зарегистрированные файлы в моей старой ветке
Это сработало для меня:
git fsck --full --no-reflogs --unreachable --lost-found
git show d6e883ff45be514397dcb641c5a914f40b938c86
git branch helpme 15e521b0f716269718bb4e4edc81442a6c11c139
Если вы удалили ветку через Source Tree, вы можете легко найти SHA1 удаленной ветки, перейдя в View -> Show Command History.
Он должен иметь следующий формат:
Deleting branch ...
...
Deleted branch %NAME% (was %SHA1%)
...
Тогда просто следуйте исходному ответу.
git branch branchName <sha1>