Как использовать хранилище учетных данных Git в WSL (Ubuntu в Windows)?

Я пробовал следующие инструкции: qaru.site/info/2746/... которые в основном делают это:

sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Но когда я выполняю какую-либо операцию в сети, я получаю эту ошибку:

** (process:7902): CRITICAL **: could not connect to Secret Service: Cannot autolaunch D-Bus without X11 $DISPLAY

Это логично, я думаю, что на самом деле нет дисплея X11.

Как сделать кеширование учетных данных Git на Ubuntu в Windows (WSL)?

Ответ 1

Если вы установили Git для Windows, в вашей системе установлен встроенный диспетчер учетных данных Windows.

Вы можете запускать исполняемые файлы Windows из WSL, как показано здесь.

Чтобы использовать его, вы можете запустить следующую команду (при условии, что ваш git для windows установлен в C:\Program Files\Git)

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

Ответ 2

TL; DR

Я создал скрипт, который делает это для вас. Я использую это с моей оркестровкой шеф-повара.

Найдите или установите git-credential-manager.exe

  1. Откройте cmd.exe и позвоните where git-credential-manager.exe
    • Если он возвращает путь, БОЛЬШОЙ. Переходите к преобразованию пути.
    • Если нет...
  2. В cmd.exe позвоните where git.exe
    • Если он не возвращает путь, следующий шаг - установить только диспетчер учетных данных
    • Если он вернет путь, это будет что-то вроде:
    • C:\Program Files\Git\cmd\git.exe
    • Оставьте все после последней косой черты и измените ее следующим образом:
    • C:\Program Files\Git\mingw64\libexec\git-core\git-credential-manager.exe
    • Если это существует, БОЛЬШОЙ. Переходите к преобразованию пути.
    • В противном случае...
  3. Установите диспетчер учетных данных из Microsoft git repo, а затем снова используйте where, чтобы получить путь.

Преобразовать путь из DOS в Linux

Нам нужно:

  1. Замените C:\ на /mnt/c/
  2. Переверните косую черту от \ до /
  3. Escape-пробелы (и круглые скобки, если таковые имеются) с двойной обратной косой чертой \\

Так...

  • "C:\Program Files\Git\mingw64\libexec\git-core\git-credential-manager.exe" становится...
  • "/mnt/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

Настроить git

  1. В bash позвоните git config --global credential.helper "<converted/path>"

Ответ 3

Используя Windows 10 и "WSL", я создал файл ~/.gitconfig, но в качестве [учетных данных] был помечен меткой раздела [credential]. Я попробовал запустить учетную запись git, а затем подал ее вывод на одобрение git, что могло бы сработать, но я подозреваю, что нет, поскольку он сказал: "использование: git credential [fill | approve | reject]". Наконец, я просто побежал:

$ git config --global credential.helper cache

и затем сделал git pull; при запросе для пользователя и пароля я набрал их как обычно. После этого он вспомнил об этом. Я обнаружил, что добавил (правильно названный) раздел в свой файл ~/.gitconfig:

[credential]
        helper = cache

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

[credential]
        helper = cache --timeout=144000

И теперь все выглядит хорошо.