ГИТ запрашивает имя пользователя каждый раз, когда я нажимаю

всякий раз, когда я пытаюсь нажать на мое РЕПО, git запрашивает оба username & password.

у меня нет проблем с повторным вводом пароля каждый раз, но проблема заключается в вводе имени пользователя. Я использую https клонировать мой репозиторий.

Итак, как я могу настроить git так, чтобы он не запрашивал username в каждом git push.

Я новичок в linux, но IIRC в windows git push запрашивает только пароль.

15 ответов


Edit (by @dk14, как предложено модераторами и комментариями)

предупреждение: Если вы используете credential.helper store из ответа ваш пароль будет храниться полностью незашифрованным ("как есть") в ~/.git-credentials. Пожалуйста, обратитесь к комментариям ниже или ответам из раздела "связанный", особенно если ваш работодатель имеет нулевую терпимость к вопросам безопасности.

обоснование: подход, описанный в ответе, может ввести крупный уязвимость, особенно для предприятий, работающих с частными финансовыми данными. В сочетании с незначительными проблемами безопасности (часто присутствующими в таких) или минимальной социальной инженерии это позволяет захватить большинство учетных данных в сети проекта, как местоположение "голого" пароля известно заранее. Это, возможно, включает учетные данные, дающие частичный доступ к производственной среде, поэтому де-факто повышающие права доступа [внутреннего] злоумышленника и позволяющие скрыть личность хакера некоторым степень.

в качестве примечания (чтобы расширить это предупреждение на примере), несколько крупных корпоративных проектов, похоже, имеют эту проблему, несмотря на обеспечение безопасных виртуальных сред для сотрудников...В основном мое обращение, чтобы избавиться от https auth был отклонен на этом основании, но в то время я не думал, что подвиг (например,cat ~/git.credentials | curl ...) может быть введен во вспомогательные скрипты bash/build, размещенные на Git, чтобы распространить его среди пользователей, возможно, даже анонимно (поскольку некоторые из них автоматически синхронизированный.) Справедливости ради, этот хак обычно не будет (по крайней мере) напрямую предоставлять доступ к критическим системам. Если Git-credentials === corporate-email-credentials.


Edit #2 (by @dk14):

даже если принято, он не отвечает на фактический вопрос OP о пропуске только имени пользователя (не пароля). Для читателей с этой точной проблемой @grawity's ответ может пригодиться.


оригинальный ответ (от @Alexander Чжу):

вы можете сохранить свои учетные данные, используя следующую команду

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

также я предлагаю вам прочитать
$ git help credentials


вы можете сделать это в .git/config файл вашего локального репозитория. Этот файл содержит раздел под названием "удаленный" с записью под названием "url". Запись " url " должна содержать https-ссылку репозитория, о котором вы говорите.

когда вы префикс хост 'url' с вашим именем пользователя,git больше не будем спрашивать ваше имя пользователя. Вот пример:

url = https://username@repository-url.com

постоянная аутентификация с репозиториями Git

выполните следующую команду, чтобы включить кэширование учетных данных:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

использовать также следует указать кэширование истекает

git config --global credential.helper "cache --timeout 7200"

после включения кэширования учетных данных, он будет кэшироваться для 7200 секунд (2 часа).


читать учетные данные Docs

$ git help credentials

Если вы используете https вместо ssh, вы можете редактировать " url " в .git/config Как говорит user701648, но если вы хотите, вы можете добавить также пароль:

url = https://username:password@repository-url.com

самый простой способ, который я нашел, был с этой командой:

git config --global credential.https://github.com.username <your_username>

это работает на сайте по сайту и изменяет вашу глобальную конфигурацию git.

чтобы увидеть изменения, использовать:

git config --global --edit

вы можете установить свое имя пользователя для всех репозиториев на данном сайте, поместив что-то вроде следующего в файл конфигурации Git. Вы захотите измениться"https://example.com " и " me " к фактическому URL и вашему фактическому имени пользователя.

[credential "https://example.com"]
    username = me

(это непосредственно из "Git help credentials")


добавить новые ключи SSH, как описано в эта статья о GitHub.

Если Git по-прежнему запрашивает имя пользователя и пароль, попробуйте изменить https://github.com/ to git@github.com: в удаленном URL:

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "git@github.com:dir/repo.git"

убедитесь, что вы используете SSH вместо http. Проверка этой так ответь.


в дополнение к ответу user701648 вы можете сохранить свои учетные данные в своей домашней папке (глобальной для всех проектов), а не в папке проекта, используя следующую команду

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

изменение работы клонированного РЕПО:

git remote set-url origin git@github.com:gitusername/projectname.git

использование кэшированных учетных данных работает, и установка периода ожидания делает вещи менее раздражающими. Если вы используете помощник учетных данных Windows, это должен быть самый простой способ (особенно если SSH заблокирован).


Если вы используете SSH версия, у вас не будет никаких проблем с паролями.Только один раз вы генерируете SSH ключ, чтобы сказать git, что этой ПК будет работать с этой учетная запись github и никогда не спрашивайте меня снова о любом доступе (для этого ПК).

как создать SSH для Github


самый простой способ создать ~/.netrc файл со следующим содержимым:

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(как показано здесь:https://gist.github.com/ahoward/2885020)

вы даже можете закрыть разрешения на этот файл, чтобы никто не мог прочитать ваш пароль, введя:

chmod 600 ~/.netrc

  1. $ git config учетные данные.вспомогательный магазин

  2. $ git push / push https://github.com/xxx.git

  3. затем введите имя пользователя и пароль.

  4. сделал

когда я только git pull, git pull origin xxx, git запрашивает как имя пользователя, так и пароль.

git config credential.helper store

это работает.


чтобы избежать ввода имени пользователя, но все равно будет предложено ввести пароль, тогда вы можете просто клонировать свой репозиторий, включая имя пользователя:

git clone user_name@example.gitrepo.com/my_repo.git