HEAD отсоединена по адресу c70e611
Это потому, что когда вы выполнили git reset --hard
, вы не были ни в одной ветке в то время. У вас была отключенная HEAD
, и эта отдельная голова была перемещена с помощью команды git reset --hard
вместе с перезаписью вашего рабочего дерева в это состояние.
Если вы хотите, чтобы какая-то ветка foo
была c70611
, то:
git checkout foo
git reset --hard c70611
Если это считается хорошим состоянием, чтобы нажать на foo
' s вверх по течению, затем просто git push
.
Существует более прямой способ принудительно преобразовать foo
в c70611
, не проверяя, что это текущая ветвь. А именно, вы можете переписать то, на что указывает foo
, используя команду git update-ref
.
Прежде чем делать что-либо из вышеперечисленного, я делал паузу и пытался увидеть, как я оказался в отстраненном состоянии, не замечая этого. Возможно, это была незаконченная перебазировка или что-то в этом роде. Шаг первый - просмотреть несколько последних записей в git reflog
, чтобы помочь вам пробудить вашу память.
Отправка стандартного уничтожения процессу по умолчанию отправляет (в соответствии с википедией )SIGTERM. Это уведомляет процесс о том, что он должен завершить работу. Это хороший способ справиться с процессом, и он выглядит следующим образом:
В отправке SIGTERM нет ничего, что заставило бы процесс выйти. Он может полностью игнорировать это или вести себя так, как хочет.
Kill -9 отправляет SIGKILL. Вам не разрешено регистрировать обработчик для SIGKILL, что означает, что по умолчанию он называется (пространство ядра, я полагаю, -кто-то поправит меня здесь ). В этом случае у вас нет возможности сделать вышеперечисленное,ваш процесс немедленно удаляется из списка исполняемых процессов, а его память и все остальное уничтожаются. Это может явно вызвать проблемы, если вы были на полпути к записи в файл.
Некоторые процессы будут принимать несколько сигналов SIGTERM перед завершением работы -Вы пробовали это? Процесс также может документировать, какие сигналы вы можете отправить ему, чтобы завершить его корректно.
Процесс, находящийся в плохом состоянии, может не иметь возможности обратиться к обработчику сигнала, даже если он зарегистрирован. Есть моменты, когда сигнал не может быть получен (Вы находитесь в состоянии прерывания или уже обрабатываете другой сигнал, и некоторые другие, которые я не могу точно определить в данный момент ). ЕСЛИ ваш процесс застрял (по какой-либо причине )в одной из этих точек, обработчик SIGTERM никогда не запустится, независимо от того, сколько раз вы его отправляете. Единственным решением здесь является SIGKILL, однако я даже видел случаи, когда этот сигнал игнорируется, и в этом случае необходима перезагрузка системы.
Чтобы ответить на ваш вопрос -, в каких случаях убийство игнорируется и настаивают на убийстве с помощью -9: