Ім'я користувача та пароль для команди git push


107

Можна клонувати сховище 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?
Рафі

14
що станеться, якщо пароль містить @?
Рахул Шарма

1
Рекомендуємо ' 'git push 'https://username:password@myrepository.biz/file.git'
додати

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 repo з ім'ям користувача та паролем як аргумент, як приклад, він все ще вимагає ввести пароль.
Джейк

3

Git не зберігатиме пароль при використанні таких URL-адрес. Натомість він просто зберігатиме ім’я користувача, тому потрібно лише підказати вам пароль наступного разу. Як пояснено в посібнику , щоб зберегти пароль, ви повинні використовувати зовнішній помічник даних . Для Windows можна використовувати Store Credential Store for Git . Цей помічник також включений за замовчуванням у GitHub для Windows .

Використовуючи його, ваш пароль автоматично запам'ятовується, тому вводити його потрібно лише один раз. Тож, коли ви клонуєте, вас попросять пароль, і тоді всяке подальше спілкування з дистанційним не запросить вашого пароля знову. Натомість помічник довіри надасть Git автентифікацію.

Це, звичайно, працює лише для аутентифікації через https; для ssh доступу ( git@host.com/repository.git) ви використовуєте SSH-ключі та ті, які ви можете запам'ятати, використовуючи ssh-agent(або тестування PuTTY, якщо ви використовуєте планкінг).


4
"Мені відомо про можливість налаштування ключів та інших рішень, але я хочу знати, чи є спосіб просто продовжувати використовувати ім'я користувача та пароль однією командою."
Марвін

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

4
Але це все ще не відповідає на його запитання.
Марвін

3

Цілком можливо, але перед git 2.9.3 (серпень 2016 року) a git pushнадрукував би повну URL-адресу, що використовується під час натискання на клонований репо.
Це буде включати ваше ім'я користувача та пароль!

Але не більше: див. Команду 68f3c07 (20 липня 2016 р.) Та здійснити 882d49c (14 липня 2016 р.) Jeff King ( peff) .
(Об'єднав Хуніо С Хамано - gitster- у комітеті 71076e1 , 08 серпня 2016 р.)

push: анонімізувати URL у вихідному статусі

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

Сторона підштовхування не має проблеми злиття-здійснення, але мабуть, вона повинна уникати друку їх на жорсткіші . Ми можемо повторно використовувати ту саму функцію анонімізації.

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

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


2

Для тих, хто має проблеми з паролями зі спеціальними символами, просто опустіть пароль, і він запропонує вам його:

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

Здається, що ваша відповідь є єдиною у всій мережі, де прямо вказано, як вказати лише ім’я користувача.
шухало
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.