Ответ 1
Чтобы избежать проблемы в первую очередь, Jefromi советы в комментариях:
Еще один совет: используйте
git branch -d
, а неgit branch -d
.
Вы будете предупреждены, если вы собираетесь удалить что-то, что может заставить вас потерять работу, тогда вы можете подумать, прежде чем использовать-D
.
(Или вы можете удалить delete изgitk
, чтобы вы действительно видели, что вы удаляете.)
-d
Удалить ветку.
Филиал должен быть полностью объединен в своей ветке вверх или вHEAD
, если восходящий поток не был установлен с помощью--track
или--set-upstream
.
Но если вы "потеряли" свою работу, см. один из много блогов о рефлоге (как Джеймс Киберз предлагает в комментариях):
вернуться к списку Git reflog к спасению Сентябрь 09, 2010 - написал Крис Слоан | 0 комментариев "
На днях я работал над функцией Real Travel, используя нашу текущую стратегию ветвления в том, что каждый выпуск, который мы делаем, является отдельной веткой.
Не уверен, что это вызвало недостаток сна с поздних часов, но я случайно удалил свою локальную и удаленную копию ветки, прежде чем объединить ее обратно в главную ветвь для выпуска.
После быстрого состояния шока и мыслей, которые пробегали мою голову от потери работы, я успокоился и опирался на свои знания Git.
Чтение всей истории фиксации:Есть два способа прочитать историю фиксации в git. Первый способ показывает список деталей, а другой показывает журнал в отношении текущего
HEAD
.
// log of detailed commits by users
$> git log
// reference log compared to the current HEAD
$> git reflog
Используя команду
reflog
, я смог точно узнать, где была последняя ссылка на мою удаленную ветку.
Пример выводаreflog
может выглядеть следующим образом:
c7f3d98 [email protected]{0}: commit: Merged in some code
f5716c8 [email protected]{1}: pull : Fast-forward
d93c27b [email protected]{2}: commit: Added some items to project
...
Теперь reflog не будет показывать точно, где была удалена ветка, но если вы помните свою последнюю фиксацию этой ветки и имеете достаточно подробное сообщение, ее легко найти и восстановить.
Восстановление ветки происходит прямо, проверяя HEAD, в которой вы хотите создать новую ветку.
$> git checkout -b my_new_branch [email protected]{5}
Вы также можете использовать хэш для проверки новой ветки.
$> git checkout -b my_new_branch d93c27b
Достаточно просто, и теперь я могу двигаться дальше, фактически объединяя ветвь перед удалением.