Насчет HEAD. Его удобно юзать в следующих командах
git push -u origin HEAD запушать текущую ветку (с которой совпадает HEAD, например master) на сервер origin и привязать (если еще не привязано) удаленную ветку origin/master к master (если текущая мастер). Привязка называется upstream
git reset --hard HEAD удалить все изменения локально (которые еще не закоммичены) и вернуться в состояние, на которое ссылается HEAD
Да, только если нет конфликтов. Иначе он ругнется и скажет: а ну давай сначала исправь конфликт. Конфликт -- это когда вы ссэ нонэйм сусликом одновременно что-то правили и нужно понять, как это объединить
Гит по-своему прекрасен. Простота концепции (хэши и референсы) и гибкость использования делает его очень красивым. ИМО все гениальное имеет простой базис. Гит сказал -- что ветка есть ссылка на лист дерева и стало прекрасно
Это значит, все сущности представлены в виде дерева (директории + файлы) причем файл может быть как реалбным местом на диске, так и виртуальным (устройством, сокетом). Например файл устройства мыши. cat /dev/mouse