How to use Git credential store on WSL (Ubuntu on Windows)?

前端 未结 5 420
有刺的猬
有刺的猬 2021-01-30 08:03

I\'ve tried following these instructions: https://stackoverflow.com/a/40312117/21728 which basically do this:

sudo apt-get install libsecret-1-0 libsecret-1-dev
         


        
相关标签:
5条回答
  • 2021-01-30 08:41
    alias git=git.exe
    

    Will simple use the git.exe from windows and its configurations

    0 讨论(0)
  • 2021-01-30 08:44

    Using Windows 10 and "WSL", I created a ~/.gitconfig file, but had mistyped the [credential] section label as [credentials]. I tried running git credential fill and then feeding its output to git credential approve, which might have worked, but I suspect not since it said "usage: git credential [fill|approve|reject]". Finally, I simply ran:

    $ git config --global credential.helper cache
    

    and then did a git pull; when prompted for user and password I typed them as usual. After that, it remembered it. I found it had added the (correctly named) section to my ~/.gitconfig:

    [credential]
            helper = cache
    

    I edited that to provide a much longer timeout:

    [credential]
            helper = cache --timeout=144000
    

    And it all seems to be working nicely now.

    0 讨论(0)
  • 2021-01-30 08:49

    TL;DR

    I've created a script that does this for you. I use it with my Chef orchestration.

    Locate or install git-credential-manager.exe

    1. Open cmd.exe and call where git-credential-manager.exe
      • If it returns a path, GREAT. Move on to converting the path.
      • If not...
    2. In cmd.exe call where git.exe
      • If it does not return a path, the next step is to install the Credential Manager alone
      • If it does return a path, it will be something like:
      • C:\Program Files\Git\cmd\git.exe
      • Let's drop the everything after the next to last slash and change it like so:
      • C:\Program Files\Git\mingw64\libexec\git-core\git-credential-manager.exe
      • If that exists, GREAT. Move on to converting the path.
      • Otherwise...
    3. Install Credential Manager from Microsoft's git repo, and then use where again to get the path.

    Convert the path from DOS to Linux

    We need to:

    1. Replace the C:\ with /mnt/c/
    2. Flip the slashes from \ to /
    3. Escape spaces (and parenthesis if there are any) with double backslashes \\

    So...

    • "C:\Program Files\Git\mingw64\libexec\git-core\git-credential-manager.exe" becomes...
    • "/mnt/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

    My script above has a function for doing just that

    dos_path_to_linux(){
        sed -e 's?\\?/?g' -e' s?[cC]:?/mnt/c?' <<<"$1"
    }
    

    But, as @12345ieee has since commented, a wslpath utility has been added to WSL build 17046. It's worth checking out, but I don't have access to Windows at this time to verify. (Note that even though a usage statement is given in the release notes in my link, it seems that the command doesn't currently include a usage statement, -h, etc.)

    Configure git

    1. In bash call git config --global credential.helper "<converted/path>"
    0 讨论(0)
  • 2021-01-30 09:03

    I have just recently updated to WSL2 and in my case the following wasn't working:

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

    What worked was the following: git config --global credential.helper "/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

    Until I've removed /mnt/ from the path I was getting a "not found" error.

    From what I've investigated there's an issue with mounting windows drives in WSL2 after a clean Windows startup, more details here: https://github.com/microsoft/WSL/issues/4122 And that was the most probable cause in my case.

    Another reason for this can be a misconfiguration of root directory in /etc/wsl.conf

    0 讨论(0)
  • 2021-01-30 09:04

    If you installed Git for Windows there is a windows integrated credential manager installed on your system.

    You can run windows executables from WSL as found here.

    To use it you can run the following command (assuming that your git for windows is installed on C:\Program Files\Git)

    git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
    
    0 讨论(0)
提交回复
热议问题