Имя пользователя и пароль в команде для git push


109

Можно клонировать репозиторий git, указав в команде имя пользователя и пароль. Пример:

git clone https://username:password@myrepository.biz/file.git

Можно ли еще при нажатии указать логин и пароль? Так что, например, при запуске git push origin --allбудет выводиться запрос пароля. Я хочу это одной командой.

(Мне известно о возможности настраивать ключи и другие решения, но я хочу знать, есть ли способ просто использовать имя пользователя и пароль с помощью одной команды.) Я запускаю Git Bash в Windows 8.1.


Вы найдете решение git commit?
Нам Ву

Ответы:


157

Да ты можешь сделать

git push https://username:password@myrepository.biz/file.git --all

в этом случае https://username:password@myrepository.biz/file.gitзамените originвgit push origin --all

Чтобы увидеть больше вариантов git push, попробуйтеgit help push


13
Обратите внимание, что это сохранит имя пользователя и пароль в виде открытого текста в конфигурации git.
тыкаешь

4
вместо обычного пароля можно использовать хеш пароля
Василий Ванчук

1
@VasiliyVanchuk Какой хеш вы используете? Это работает на Github?
Raphi 01

14
что будет если пароль содержать @?
Рахул Шарма

2
Рекомендую заключить полный путь ' ', например:git push 'https://username:password@myrepository.biz/file.git'
AlikElzin-kilaka

27

Я использовал формат ниже

git push https://username:password@myrepository.biz/file.git --all

и если ваш пароль или имя пользователя содержат @, замените его на% 40


Вы даже можете использовать WebUtility.UrlEncode (пароль), чтобы получить этот% 40
iPradeep

для пользователей php это urlencode($password)будет кодировать не только все специальные символы @.
shyammakwana.me

3

Согласно документации Git , последним аргументом git pushкоманды может быть репозиторий, в который вы хотите отправить:

    git push [--all | --mirror | --tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
             [--repo=<repository>] [-f | --force] [--prune] [-v | --verbose] [-u | --set-upstream]
             [<repository> [<refspec>…]]

И repositoryпараметром может быть URL или удаленное имя.

Таким образом, вы можете указать имя пользователя и пароль так же, как в вашем примере cloneкоманды.


2
Это кажется подходящим, но когда я добавляю репозиторий git с именем пользователя и паролем в качестве аргумента, как в примере, он все равно запрашивает пароль.
Джейк

3

Git не будет хранить пароль, когда вы используете такие URL-адреса. Вместо этого он просто сохранит имя пользователя, поэтому в следующий раз ему нужно будет только запросить пароль. Как объясняется в руководстве , для хранения пароля следует использовать внешний помощник по учетным данным . Для Windows вы можете использовать хранилище учетных данных Windows для Git . Этот помощник также по умолчанию включен в GitHub для Windows .

При его использовании ваш пароль будет автоматически запоминаться, поэтому вам нужно будет ввести его только один раз. Поэтому, когда вы клонируете, вам будет предложено ввести пароль, а затем при каждом последующем общении с пультом дистанционного управления не будет запрашиваться пароль снова. Вместо этого помощник по учетным данным предоставит Git аутентификацию.

Конечно, это работает только для аутентификации через https; для ssh access ( git@host.com/repository.git) вы используете SSH-ключи и те, которые вы можете вспомнить ssh-agent(или конкурс PuTTY, если вы используете plink).


4
«Мне известно о возможности настраивать ключи и другие решения, но я хочу знать, есть ли способ просто продолжать использовать имя пользователя и пароль с помощью одной команды».
Марвин

@Marvin Мне известно об этом замечании, однако я не хотел просто отправлять ответ из двух предложений, поэтому я включил информацию для других пользователей, которые могут быть не просто заинтересованы в подключении через HTTPS.
тыкаешь

4
Однако это все еще не отвечает на его вопрос.
Марвин

3

Это возможно, но до git 2.9.3 (август 2016 г.) a git pushбудет печатать полный URL-адрес, используемый при возврате к клонированному репо.
Это будет включать ваше имя пользователя и пароль!

Но не более того: см. Коммит 68f3c07 (20 июля 2016 г.) и коммит 882d49c (14 июля 2016 г.) Джеффом Кингом ( peff) .
(Объединено Junio ​​C Hamano - gitster- в коммите 71076e1 , 8 августа 2016 г.)

push: анонимизировать URL в выводе статуса

Коммит 47abd85 (выборка: удаление имен пользователей из URL- адресов перед их сохранением, 2009-04-17, Git 1.6.4) научил выборке анонимизировать URL-адреса.
Основная цель заключалась в том, чтобы избежать наклеивания паролей в сообщениях слияния и фиксации, но в качестве побочного эффекта мы также избегаем печати их в stderr.

На стороне push нет проблемы слияния-фиксации, но, вероятно, следует избегать их вывода на stderr . Мы можем повторно использовать ту же функцию анонимизации.

Обратите внимание, что для этого учетные данные должны появиться либо в командной строке, либо в файле конфигурации git, ни один из которых не является особенно безопасным.
Таким образом, люди должны перейти на использование помощников по учетным данным, что решит эту проблему.

Но это не оправдание, чтобы не улучшить ситуацию для людей, которые по какой-либо причине в конечном итоге используют учетные данные, встроенные в URL-адрес.


3

Для тех, у кого есть проблемы с паролями со специальными символами, просто опустите пароль, и он предложит вам его:

git push https://YOUR_GIT_USERNAME@github.com/YOUR_GIT_USERNAME/yourGitFileName.git

Кажется, что ваш ответ - единственный во всей сети, прямо указывающий, как указать только имя пользователя.
shuhalo

@PreetSangha, вы изменили YOUR_GIT_USERNAMEимя пользователя, и если вы не используете github.com, изменили ли вы его на что-то другое? Вы перешли yourGitFileName.gitна что-то другое?
TheTechRobo36414519

@ TheTechRobo36414519 Прошу прощения за мой комментарий. Это было вызвано другой проблемой с разрешением.
Preet Sangha

@PreetSangha Никакого вреда: D
TheTechRobo36414519
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.