Страницы

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

среда, 25 декабря 2019 г.

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

#linux #git #git_push #git_config


Привет всем!

Такая проблема: 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


Но я не пойму, для чего тогда нужны настройки, если они не подхватываются? Может,
они работают как-то иначе/предназначены для чего-то другого?
    


Ответы

Ответ 1



Смысл 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 нужно однократно настроить.

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

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