Как ввести команду с паролем для git pull?


140

Я хочу сделать эту команду в одну строку:

git pull && [my passphrase]

Как это сделать?


Вы можете изменить свою фразу-пароль на пустую, выполнив следующие действия: help.github.com/articles/working-with-ssh-key-passphrases
jacerate

1
Вы можете избежать необходимости вводить фразу-пароль, если вы запускаете ssh agent. Когда вы в первый раз делаете git pull, вы делаете это в интерактивном режиме, и ssh agent запомнит ваш закрытый ключ, и вы можете запустить git pull без запроса.
Тим Финер

Ответы:


162

Это не совсем то, что вы просили, но для http (s):

  • Вы можете поместить пароль в файл .netrc (_netrc в Windows). Оттуда это будет взято автоматически. Он пошел бы в вашу домашнюю папку с 600 разрешениями.
  • Вы также можете просто клонировать репозиторий, https://user:pass@domain/repoно это не очень рекомендуется, так как он будет показывать вашего пользователя / прохода во многих местах ...
  • новая опция - использовать помощник по учетным данным . Обратите внимание, что учетные данные будут храниться в виде открытого текста в вашей локальной конфигурации с использованием стандартного помощника учетных данных. Учетные данные помощника с Wincred также могут быть использованы на окнах.

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

  • git config credential.helper store - хранит учетные данные неопределенно долго.
  • git config credential.helper 'cache --timeout=3600'- магазины на 60 минут

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


1
Можете ли вы рассказать о части SSH? Я настраиваю экземпляр EC2, и я хотел бы, чтобы он извлекал данные без запроса пароля и автомасштабирования AWS. Эта публичная / частная схема выглядит как хорошее решение.
Педро Дуссо

1
@PedroDusso звучит так, как будто вы ищете эту тему
eis

2
я закончил, используя механизм ключей развертывания, который, кажется, является хорошим решением. Спасибо!
Педро Дуссо

129

Я нашел один способ предоставить учетные данные для соединения https в командной строке. Вам просто нужно указать полный URL для git pull и включить туда учетные данные:

git pull https://username:password@mygithost.com/my/repository

Вам не нужно предварительно клонировать хранилище с учетными данными, это означает, что ваши учетные данные не заканчиваются .git/config. (Но убедитесь, что ваша оболочка не предает вас и сохраняет командную строку в файле истории.)


пароль не требуется, и это небезопасно писать пароль таким образом
метеор

разве это не одна из вещей, которые я перечислил в принятом ответе, уже в 2012 году?
эйс

8
@ EIS: Не совсем. Дело в том, что вам не нужно клонировать хранилище с URL-адресом, который включает в себя учетные данные, но все же можно извлечь из URL-адреса с учетными данными. В результате учетные данные не попадают в файл .git / config.
Holgero

5
Если вы пропустите :passwordчасть, вам будет предложено ввести пароль после нажатия Enter. Таким образом, ваш пароль не будет сохранен в истории Bash.
Матиас Фишер

1
Да @PramodGarg используется - имя пользователя git pull : password@mygithost.com/my/repository.git Branch
PAVITRA

39

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

Ну, gitпозволяет вам кэшировать свои учетные данные в течение ограниченного периода времени. Это настраивается в, git configи эта страница объясняет это очень хорошо:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

В терминале запустите:

$ git config --global credential.helper cache
# Set git to use the credential memory cache

Чтобы настроить время ожидания кэша, вы можете сделать:

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

Ваши учетные данные будут храниться в памяти в течение запрошенного периода времени.


5

Обратите внимание, что способ, которым git credential helper «store» будет хранить незашифрованные пароли, меняется в Git 2.5+ (2 квартал 2014 года).
Смотрите коммит 17c7f4d от Junio ​​C Hamano ( gitster)

credential-xdg

Настройте образец " store" бэкенда помощника по учетным данным, чтобы указать расположение файла конфигурации XDG, когда оно указано.

Док теперь говорит:

Если не указано:

  • учетные данные будут искать от ~/.git-credentialsи $XDG_CONFIG_HOME/git/credentials, и
  • учетные данные будут записаны, ~/.git-credentialsесли они существуют, или $XDG_CONFIG_HOME/git/credentialsесли они существуют, а первые нет.

1

Ниже cmd будет работать, если у нас нет @ в пароле: git pull https://username:pass@word@mygithost.com/my/repository если у вас @ в пароле, замените его на% 40, как показано ниже: git pull https://username:pass%40word@mygithost.com/my/repository

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