Come usare git con l'integrazione di gnome-keyring


129

Git 1.8.0 supporta l'integrazione con gnome-keyring.

http://www.h-online.com/open/news/item/Git-1-8-0-can-access-Windows-and-GNOME-keyrings-1733879.html

Dopo aver letto i documenti sugli helper delle credenziali git: http://git-scm.com/docs/gitcredentials.html

Non sono stato in grado di trovare un modo per utilizzare questa nuova funzionalità. Come posso integrarlo? Sto usando Archlinux con git installato dal repository di Archlinux. (git 1.8.0)

Risposte:


193

La risposta di @ marcosdsanchez è per Arch (che risponde alla domanda originale) ma sono su Ubuntu. Per git> = 2.11:

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

Per git <2.11:

sudo apt-get install libgnome-keyring-dev
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

9
All'inizio ero titubante, ma alla fine l'ho fatto e funziona perfettamente. Come dicono i documenti per gitcredentials , potresti anche voler fare git help -a | grep credential-e vedere se hai altri helper installati. Quelli che arrivano per impostazione predefinita sono credential-cache(ricordare la password per un po 'di tempo dopo averla inserita, 15 minuti per impostazione predefinita) e credential-store(basta archiviare la password in testo normale su un file non crittografato sul disco, ~/.git-credentialsper impostazione predefinita).
ShreevatsaR,

51
Qualcuno potrebbe spiegare perché questo deve essere compilato manualmente e non è disponibile per impostazione predefinita tramite un pacchetto?
lanoxx,

4
Ha funzionato in Ubuntu 14.04 LTS!
Eugene Kulabuhov,

4
chmod 0755 git-credential-gnome-keyring
dovevo

8
Ancora valido per Ubuntu 16.04 LTS
Eugene Kulabuhov,

54

Git 1.8.0 viene fornito con il supporto gnome-keyring ma il binario deve essere compilato per la tua piattaforma.

Questo è ciò che ha risolto per me in Archlinux:

$ sudo pacman -S libgnome-keyring
$ cd /usr/share/git/credential/gnome-keyring
$ make
$ git config --global credential.helper /usr/share/git/credential/gnome-keyring/git-credential-gnome-keyring

La soluzione @VonC era vicina, ma il comando git config dovrebbe puntare all'eseguibile. Ecco perché non funzionava per me.


Ho riformattato la mia risposta per riflettere la tua conclusione. L'ho costruito (non è stato creato di default nella mia distro git 1.8) e l'ho testato questa mattina. Funziona
VonC,

1
Se stai ottenendo Package gnome-keyring-1 was not found in the pkg-config search path.ti mancano le librerie dev per gnome-keyring. Su Ubuntu sono disponibili con apt-get install libgnome-keyring-dev. Inoltre, ho dovuto scaricare manualmente il repository git contrib da github.com/git/git/tree/master/contrib e inserirlo in / usr / share / git-core /. Questi file non sono più inclusi con un'installazione git predefinita, almeno usando Ubuntu ppa ufficiale git-core.
Johann

1
Questo spiega abbastanza bene perché il pacchetto aur git-credential-gnomekeyringè sparito, peccato che in AUR non ci siano tali informazioni.
reno il

Su Ubuntu non ho una cartella git in /usr/share/... solo gitweb e git-core. Ma sono su Git 1.7.9. Potrebbe essere per questo ...?
temporaneo

1
A partire dal 2017 su Arch, l'installazione libgnome-keyringè sufficiente (almeno se stai usando gnome).
ald.li

25

Aggiornamento Q4 2016:

  • Unix, Mac (Git 2.11+)

    git config --global credential.helper libsecret
    

(Vedi " Errore durante l'utilizzo dell'helper delle credenziali Git congnome-keyring ")

  • Finestre:

    git config --global credential.helper manager
    

(Vedi " Come uscire dalla console di Git Bash in Windows? ": Questo è Git per Windows usando l'ultimo Microsoft Git Credential Manager per Windows )


Risposta originale (2012)

Credential Helpers, per piattaforme Windows, Mac e Unix, sono stati introdotti prima nel repository "git-credential-helper" , che ora è stato incluso in git distro :

Questo repository contiene l'insieme degli helper delle credenziali di Git ( gitcredentials(7)) che fanno parte di git(o che si intende apportare in futuro).

$ git clone git://github.com/pah/git-credential-helper.git
$ BACKEND=gnome-keyring      # or any other backend
$ cd git-credential-helper/$BACKEND
$ make
$ cp git-credential-$BACKEND /path/to/git/crendential

quando compilato, verrebbe installato nella /path/to/git/credentialdirectory.

Per usare questo backend, puoi aggiungerlo alla tua configurazione (globale) di Git impostando

(qui per Unix):

git config --global credential.helper /path/to/git/credential/gnome-keyring/git-credential-gnome-keyring

Nota per Windows:

Suppongo che potresti creare un programma in esecuzione su Windows e chiamare una libreria come " portachiavi pypi 0.10 .
Ma questo è il back-end e non lo usi direttamente da Git.

Quello che stai usando è un "supporto credenziale" (che, a sua volta, chiamerà qualsiasi API credenziale che desidera su Windows ).

GitHub per Windows fornisce un tale aiuto (come un eseguibile chiamato ... github) e può memorizzare le tue credenziali per la durata della sessione di Windows.
Avvia una shell da quella finestra "GitHub per Windows" e vedrai, digitando "git config --system -l":

C:\Users\VonC\Documents\GitHub\test [master +2 ~0 -0 !]> git config --system -l
credential.helper=!github --credentials

La credential.helper=!github --credentialsparte chiamerà l'helper delle credenziali ' github'.

$ git config [--global] credential.helper $BACKEND

Non è quello che sto cercando. La risposta dovrebbe essere solo * nix.
marcosdsanchez,

@marcosdsanchez ok, ho modificato la mia risposta per includere una configurazione e l'uso di gnome-keyring su Unix con Git.
VonC,

Voglio usare la funzione 1.8.0 di git, che è già lì. Non codice di terze parti. Grazie.
marcosdsanchez,

@marcosdsanchez allora devi compilare github.com/git/git/tree/master/contrib/credential/gnome-keyring (che è impacchettato con git). Una volta compilato, lo installeresti e lo utilizzeresti come illustrato nella mia risposta.
VonC,

Immagino non ci sia binario incorporato?
marcosdsanchez,

15

Aggiornamento ottobre 2018

GNOME ha deprecato il portachiavi di libgnome e lo ha sostituito con libsecret. Commit https://github.com/git/git/commit/87d1353a6a ha aggiunto una nuova credenziale helper / usr / libexec / git-core / git-credential-libsecret.

git config --global credential.helper libsecret


2
Probabilmente, questo dovrebbe essere un commento su qualsiasi risposta basata sul portachiavi di gnome qui.
Murmel,

D'accordo, le gnome-keyringrisposte basate dovrebbero essere modificate di conseguenza. Forse basta escludere l'intera opzione. Non ha funzionato per me su Ubuntu 19.10.
Mario

11

Per chiunque su Fedora, ho modificato leggermente la risposta di James Ward:

sudo yum install libgnome-keyring-devel
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

2
Sono confuso, non è già incluso nei pacchetti git? Cos'è questo file nel pacchetto fc19, git-1.8.3.1-1.fc19.x86_64. C'è questo file qui: /usr/libexec/git-core/git-credential-gnome-keyring.
slm,

10
In Fedora 21, git 2.1.0, puoi semplicemente fare:git config --global credential.helper gnome-keyring
RedPoppy il

7

Aggiungi queste due righe al tuo ~/.gitconfigfile:

[credential]
    helper = gnome-keyring

La prossima volta che ti verrà chiesta una password da Git, la password inserita verrà salvata in Gnome Keyring (puoi vederla con lo seahorsestrumento) e in seguito non ti verrà più richiesta la password.

Questo presuppone che la tua versione di Git sia sufficientemente nuova (come la 2.1.0) e che tu sia su Linux Fedora, RHEL o CentOS. Per le versioni precedenti o altri sistemi operativi / distribuzioni controlla le altre risposte.


6
In Ubuntu 16.04:git: 'credential-gnome-keyring' is not a git command.
ferit

@ Saibot: whoops, hai ragione. Sembra che Fedora / RHEL lo forniscano, ma Ubuntu no. Quindi la risposta di James Ward ( stackoverflow.com/a/14528360/2148773 ) è migliore in quel caso.
Oliver,

2

Alcune distribuzioni includono questa integrazione come pacchetto di installazione, senza richiedere alcuna compilazione. A seconda della tua versione di GNOME, dovrai installare una gnome-keyringo entrambe le libsecretversioni del pacchetto, qualcosa come git-credential-gnome-keyring(OpenSUSE Leap 42.3).

Tuttavia, questo di per sé non consentirà automaticamente l'integrazione di Git con il portachiavi GNOME. Devi ancora configurare Git per utilizzare questo metodo di archiviazione delle credenziali:

git config --global credential.helper gnome-keyring # If you installed git-credential-gnome-keyring
git config --global credential.helper libsecret     # If you installed git-credential-libsecret

Su Ubuntu 19.10, l' gnome-keyringopzione non funziona più per me, ma le istruzioni di James Ward usando libsecretfunzionano ancora bene. Sono stato, tuttavia, confuso dalla raccomandazione di utilizzare gnome-keyringqui: github.com/timhughes/git-credential-libsecret
Mario

libsecret(o ciò che find /usr -iname git-credential-libsecretdà) è l'opzione giusta in Gentoo Linux. Si noti che dev-vcs/gitdeve essere emerso con USE=gnome-keyring.
sphakka,

1

Su Fedora devi installare

$ sudo dnf install git-credential-libsecret

e modifica la tua configurazione git per usare l'helper delle credenziali.

[credential]
    helper = /usr/libexec/git-core/git-credential-libsecret

Cordiali saluti il libsecretpacchetto è stato recentemente suddiviso, vedi post da @rugk . Ecco perché gli utenti devono reinstallare questo pacchetto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.