Страницы

Поиск по вопросам

четверг, 29 ноября 2018 г.

Git не подхватывает config любого уровня. Или “Поле user.name бесполезно?”

Привет всем!
Такая проблема: Git почему-то не подхватывает настройки, когда я пытаюсь запушить что-либо. То есть он постоянно просит ввести Username и Password, хотя, по идее, он должен просить только Password
Настройки делал глобальные. То есть:
git config --global user.name 'SomeName' git config --global user.email some@email.com
Но также пытался создать и локальный конфиг, и системный конфиг... Ни один не подхватывается
Пытаюсь подключиться к GitHub, использую Linux
Читал конфиги, думал, может что-то не так пишется, но нет. Всё в конфигах прописано корректно. Смущает разве что только табуляция вместо пробелов. Но не я устанавливаю правила форматирования.
Интересно то, что с GitLab всё отлично работает. Ну у них работает всё, ибо они сразу дают твой логин в url, а вот с GitHub это решается заменой origin с
https://github.com/username/repo.git
на
https://username@github.com/username/repo.git
Но я не пойму, для чего тогда нужны настройки, если они не подхватываются? Может, они работают как-то иначе/предназначены для чего-то другого?


Ответ

Смысл user.name и user.email
Настройки user.name и user.email используются для того, чтобы сохранять в коммитах информацию об авторстве. Например, так можно посмотреть данные последнего коммита:
git cat-file commit HEAD
Пример вывода, обратите внимание на третью и четвертую строки:
tree 2159e904426c047e790d559c7cc62dd3d4b5174e parent 60b9a77a21a464d71171e483d1bc834ea6fde209 author Name Surname 1461622007 +0200 committer Name Surname 1461622007 +0200
Смысл такой:
author – автор изменений в коде committer – тот, кто закоммитил эти изменения в git.
Обычно они совпадают, в редких случаях отличаются.
Что делать с авторизацией
Способ авторизации зависит от того, что вы используете для обмена данных с удаленным репозиторием:
Протокол HTTPS (с адресом вида https://github.com/username/repo-name.git) Протокол SSH (с адресом вида git@github.com:username/repo-name.git) Собственный протокол Git. Используется редко, здесь рассматривать не будем.
(Подробнее о протоколах)
В первом случае вам всегда нужно вводить логин и пароль. Вот vp_arth подсказывает в комментарии, что можно настроить их кеширование, чтобы вводить приходилось пореже:
git config credential.helper 'cache --timeout=300'
Вместо этого рекомендую вам использовать протокол SSH, где для авторизации используются ключи и поэтому не нужно каждый раз вводить логин и пароль. Авторизацию по SSH нужно однократно настроить

Комментариев нет:

Отправить комментарий