git troubleshoot
Обычно git сам вместе с выводом о проблеме приводит команды для ее решения, так что полезно туда смотреть!
Ошибка идентификации
Если не были установлены основные конфигурации (имя и email), то git не даст сделать коммит (Author identity unknown), так как для коммита нужны эти конфиги - они указываются в инфе об авторе коммита. Чтобы исправить это - нужно:
Коммит в неправильную ветку
Чтобы исправить - сначала делаем git reset <commit>
с хэшем коммита, который стоит раньше нашего коммита.
Второй способ решения проблемы.
После коммита в неправильной ветке:
Не получается сделать git pull
Обычный конфликт слияния из-за несовпадения версий в remote и local repos. Если файлов конфликтных много и времени или желания заниматься правкой нет, то можно кинуть конфликты в другую ветку.
Не получается сделать git push
В gitlab, к примеру, ветка master защищена и просто так сделать push туда не выйдет - нужно просить админа разблокировать ветку либо создать другую ветку.
Но последний вариант тоже может не сработать, если remote repo пустой - нужно просить админа создать там хотя бы один файл, потом затянуть эти изменения себе на local и уже потом делать push.
Ошибка при клонировании репозитория с SSH-URL
Если при клонировании репозитория с SSH-URL вы получили ошибку, то, скорее всего, у вас есть несколько ключей на локальной машине. Алгоритм ниже подходит только для решения этой проблемы. Найдите или создайте файл config (без расширения) в папке ~/.ssh/. В файле напишите, какой ключ для какого хостинга или аккаунта использовать. Настроенный файл выглядит примерно так:
Блок Host определяет обёртку - то, какому аккаунту соответствует некоторый SSH-ключ.
Внутри блока Host укажите:
- HostName - адрес интернет-хостинга, где размещён ваш репозиторий;
- User - git;
- IdentityFile - путь до SSH-ключа, привязанного к аккаунту с соответствующим Host.
Чтобы избежать конфликта ключей SSH и решить проблему, создайте такой блок для каждого SSH-ключа.
В конце замените строку github.com во всей ссылке SSH, которую вы копировали на восьмом шаге, на строку из Host, которую вы вписали в файл config.
Соус: 2.5 Создание SSH-ключа