1

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

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

printf 'username\npassword' | git push

но запрос имени пользователя и пароля все равно не исчезнет!
Почему это не работает?

Замечания:
Я знаю, что это можно сделать с помощью:
git push 'https://username:password@github.com/username/repo.git'
но мне интересно знать, что не так с методом трубопровода?


Также, чтобы подтвердить, что этот процесс работает для других случаев, я провел эксперимент.
Я создал скрипт b.py:

b.py:

#!/usr/bin/env python3

username = input()
password = input()

log = open("log.txt", "w")
print(username + "\n" + password, file=log)

Затем я выполнил printf 'abcd\nefgh' | ./b.py в терминале, который работал как ожидалось и привел к файлу журнала, содержащему строки имени пользователя и пароля:

log.txt:

abcd
efgh

1 ответ1

1

Это будет работать только в случае последовательных запросов, которые являются непосредственной частью сценария, как в вашем примере. Однако в случае с git ваши значения передаются процессу до любого запроса имени пользователя / пароля - вероятно, когда он делает все (сеть и т.д.) До GIT_ASKPASS - для справки:https://git-scm.com/book/ ан / v2 / GIT-Внутренность-переменные окружения

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .