Cara menggunakan git dengan integrasi gnome-keyring

129

Git 1.8.0 mendukung integrasi dengan gnome-keyring.

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

Setelah membaca dokumen tentang git credentials helpers: http://git-scm.com/docs/gitcredentials.html

Saya tidak dapat menemukan cara untuk menggunakan fitur baru ini. Bagaimana saya bisa mengintegrasikannya? Saya menggunakan Archlinux dengan git diinstal dari repositori Archlinux. (git 1.8.0)

marcosdsanchez
sumber

Jawaban:

193

Jawaban @ marcosdsanchez adalah untuk Arch (yang menjawab pertanyaan awal) tapi saya di Ubuntu. Untuk 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

Untuk 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
James Ward
sumber
9
Saya ragu-ragu untuk melakukan ini pada awalnya, tetapi akhirnya saya lakukan dan itu bekerja dengan sempurna. Seperti yang dikatakan dokumen untuk gitcredentials , Anda mungkin juga ingin melakukan git help -a | grep credential-dan melihat apakah Anda memiliki pembantu lain yang diinstal. Yang datang secara default adalah credential-cache(ingat kata sandi untuk beberapa waktu setelah Anda memasukkannya, 15 menit secara default), dan credential-store(simpan saja kata sandi dalam plaintext pada file yang tidak dienkripsi pada disk, ~/.git-credentialssecara default).
ShreevatsaR
51
Adakah yang bisa menjelaskan mengapa ini perlu dikompilasi secara manual dan tidak tersedia secara default melalui sebuah paket?
lanoxx
4
Bekerja di Ubuntu 14,04 LTS!
Eugene Kulabuhov
4
hanya perlu dilakukan chmod 0755 git-credential-gnome-keyringuntuk menambahkan izin eksekusi kepada orang lain selain root
Lari Hotari
8
Masih berlaku untuk Ubuntu 16.04 LTS
Eugene Kulabuhov
54

Git 1.8.0 hadir dengan dukungan gnome-keyring tetapi biner perlu dikompilasi untuk platform Anda.

Inilah yang memecahkannya bagi saya di 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

Solusi @VonC sudah dekat, tetapi perintah git config harus menunjuk ke executable. Itu sebabnya itu tidak berhasil untuk saya.

marcosdsanchez
sumber
Saya telah memformat ulang jawaban saya untuk mencerminkan kesimpulan Anda. Saya telah membangunnya (itu bukan build secara default di distro git 1.8 saya) dan mengujinya pagi ini. Itu berhasil.
VonC
1
Jika Anda mendapatkan Package gnome-keyring-1 was not found in the pkg-config search path.Anda kehilangan perpustakaan dev untuk gnome-keyring. Di Ubuntu ini tersedia dengan apt-get install libgnome-keyring-dev. Juga, saya harus mengunduh repo git contrib secara manual dari github.com/git/git/tree/master/contrib dan memasukkannya ke / usr / share / git-core /. File-file ini tidak lagi disertakan dengan instalasi git default, setidaknya menggunakan ppa ubit git-core resmi.
Johann
1
Ini cukup menjelaskan mengapa paket aur git-credential-gnomekeyringhilang, terlalu buruk bahwa di AUR tidak ada informasi seperti itu.
ryenus
Di ubuntu saya tidak memiliki folder git di /usr/share/... hanya gitweb dan git-core. Tapi saya di Git 1.7.9. Mungkinkah itu sebabnya ...?
temporary_user_name
1
Pada 2017 di Arch, cukup menginstal libgnome-keyringsudah cukup (setidaknya jika Anda menggunakan gnome).
ald.li
25

Pembaruan Q4 2016:

  • Unix, Mac (Git 2.11+)

    git config --global credential.helper libsecret
    

(Lihat " Kesalahan saat menggunakan pembantu kredensial Git dengangnome-keyring ")

  • Windows:

    git config --global credential.helper manager
    

(Lihat " Cara keluar di konsol Git Bash di Windows? ": Itu adalah Git untuk Windows menggunakan Microsoft Git Credential Manager terbaru untuk Windows )


Jawaban asli (2012)

Credential Helpers, untuk platform Windows, Mac dan Unix, telah diperkenalkan pertama kali dalam repo "git-credential-helper" , yang sekarang telah termasuk dalam distro git :

Repositori ini berisi kumpulan pembantu kredensial Git ( gitcredentials(7)) yang merupakan bagian dari git(atau dimaksudkan untuk dikontribusikan di masa depan).

$ 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

ketika membangun, itu akan menginstal di /path/to/git/credentialdirektori.

Untuk menggunakan backend ini, Anda dapat menambahkannya ke konfigurasi Git (global) Anda dengan mengatur

(di sini untuk Unix):

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

Catatan untuk Windows:

Saya kira Anda bisa membuat program yang berjalan di Windows dan memanggil perpustakaan seperti " pypi keyring 0.10 .
Tapi itu adalah back-end, dan Anda tidak menggunakannya langsung dari Git.

Apa yang Anda gunakan adalah "kredensial pembantu" (yang, pada gilirannya, akan memanggil API kredensial apa pun yang diinginkannya di Windows ).

GitHub untuk Windows menyediakan bantuan seperti itu (sebagai executable disebut ... github), dan dapat menyimpan kredensial Anda selama durasi sesi Windows.
Luncurkan sebuah shell dari windows "GitHub for Windows", dan Anda akan melihat, mengetik "git config --system -l":

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

Bagian credential.helper=!github --credentialsakan memanggil pembantu kredensial ' github'.

$ git config [--global] credential.helper $BACKEND
VONC
sumber
Bukan yang saya cari. Jawabannya harus * nix saja.
marcosdsanchez
@marcosdsanchez ok, saya telah mengedit jawaban saya untuk memasukkan pengaturan dan penggunaan gnome-keyring di Unix dengan Git.
VonC
Saya ingin menggunakan fitur 1.8.0 git, yang sudah ada di sana. Bukan kode pihak ketiga. Terima kasih.
marcosdsanchez
@marcosdsanchez maka Anda perlu mengkompilasi github.com/git/git/tree/master/contrib/credential/gnome-keyring (yang dikemas dengan git). Setelah dikompilasi, Anda akan menginstal dan menggunakannya seperti yang diilustrasikan dalam jawaban saya.
VonC
Saya kira tidak ada biner bawaan?
marcosdsanchez
15

Perbarui Oktober 2018

GNOME telah meninggalkan key-libgnome dan menggantinya dengan libsecret. Commit https://github.com/git/git/commit/87d1353a6a menambahkan pembantu kredensial baru / usr / libexec / git-core / git-credential-libsecret.

git config --global credential.helper libsecret

vk5tu
sumber
2
Mungkin, ini harus menjadi komentar atas jawaban berbasis gnome-keyring di sini.
Murmel
Setuju, gnome-keyringjawaban berdasarkan harus diedit sesuai. Mungkin hanya mengecualikan seluruh opsi. Itu tidak berhasil sama sekali bagi saya di Ubuntu 19.10.
Mario
11

Bagi siapa pun di Fedora, saya sedikit mengedit jawaban 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
SuperGreg
sumber
2
Saya bingung, bukankah ini sudah termasuk dalam paket git? Apa file ini kemudian dalam paket fc19, git-1.8.3.1-1.fc19.x86_64. Ada file ini di sini: /usr/libexec/git-core/git-credential-gnome-keyring.
slm
10
Di Fedora 21, git 2.1.0, Anda cukup melakukan:git config --global credential.helper gnome-keyring
RedPoppy
7

Cukup tambahkan dua baris ini ke ~/.gitconfigfile Anda :

[credential]
    helper = gnome-keyring

Lain kali Anda diminta kata sandi oleh Git, kata sandi yang dimasukkan akan disimpan ke Gnome Keyring (Anda dapat melihat ini dengan seahorsealat), dan Anda tidak akan diminta kata sandi lagi setelahnya.

Ini mengasumsikan bahwa versi Git Anda cukup baru (seperti 2.1.0) dan Anda berada di Linux Fedora, RHEL atau CentOS. Untuk versi yang lebih lama atau OS / distro lain, periksa jawaban lainnya.

oliver
sumber
6
Di Ubuntu 16.04:git: 'credential-gnome-keyring' is not a git command.
ferit
@Saibot: ups, kau benar. Sepertinya Fedora / RHEL menyediakan ini, tetapi Ubuntu tidak. Jadi jawabannya oleh James Ward ( stackoverflow.com/a/14528360/2148773 ) lebih baik dalam hal ini.
oliver
2

Beberapa distribusi hadir dengan integrasi ini sebagai paket instalasi, tanpa memerlukan kompilasi. Bergantung pada versi GNOME Anda, Anda perlu menginstal salah satu gnome-keyringatau libsecretversi paket, seperti git-credential-gnome-keyring(OpenSUSE Leap 42.3).

Namun, ini dengan sendirinya tidak akan memungkinkan integrasi Git dengan Keyring GNOME secara otomatis. Anda masih harus mengonfigurasi Git untuk menggunakan metode penyimpanan kredensial ini:

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
palswim
sumber
Di Ubuntu 19.10, gnome-keyringopsi tidak lagi berfungsi untuk saya, tetapi instruksi James Ward menggunakan libsecretmasih berfungsi dengan baik. Namun, saya bingung dengan rekomendasi yang digunakan di gnome-keyringsini: github.com/timhughes/git-credential-libsecret
Mario
libsecret(atau apa yang find /usr -iname git-credential-libsecretmemberi) adalah opsi yang tepat di Gentoo Linux. Catatan yang dev-vcs/githarus muncul adalah USE=gnome-keyring.
sphakka
1

Di Fedora Anda harus menginstal

$ sudo dnf install git-credential-libsecret

dan edit konfigurasi git Anda untuk menggunakan helper kredensial.

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

FYI libsecretpaket baru-baru ini dipisah, lihat posting dari @rugk . Itu sebabnya pengguna perlu menginstal ulang paket ini.

kinafu
sumber