如何在gnome-keyring集成中使用git


Answers:


193

@marcosdsanchez的答案是针对Arch(它回答了原始问题),但是我在Ubuntu上。对于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

对于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
刚开始我很犹豫,但最后还是做了,效果很好。正如gitcredentials文档所说,您可能还想这样做git help -a | grep credential-,看看是否安装了其他帮助程序。默认情况下是credential-cache(输入密码后,请记住一段时间,默认为15分钟),以及credential-store(默认情况下,将密码以纯文本格式存储在磁盘上未加密的文件中~/.git-credentials)。
ShreevatsaR 2013年

51
谁能解释为什么这需要手动编译并且默认情况下无法通过软件包使用?
lanoxx 2014年

4
在Ubuntu 14.04 LTS中工作!
Eugene Kulabuhov 2014年

4
只是需要向chmod 0755 git-credential-gnome-keyring除root以外的其他人添加执行权限
Lari Hotari

8
仍适用于Ubuntu 16.04 LTS
Eugene Kulabuhov,

54

Git 1.8.0附带了gnome-keyring支持,但是需要为您的平台编译二进制文件。

这是在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

@VonC解决方案已关闭,但git config命令应指向可执行文件。这就是为什么它对我不起作用。


我已将我的答案重新格式化以反映您的结论。我已经构建了它(它在我的git 1.8发行版中不是默认构建的)并在今天早上对其进行了测试。它确实起作用。
VonC 2012年

1
如果得到的Package gnome-keyring-1 was not found in the pkg-config search path.话,您将缺少用于gnome-keyring的开发库。在Ubuntu上,这些功能可用于apt-get install libgnome-keyring-dev。另外,我必须从github.com/git/git/tree/master/contrib手动下载git contrib 仓库,并将其放在/ usr / share / git-core /中。这些文件不再包含在默认的git安装中,至少使用官方的git-core ubuntu ppa。
2013年

1
这很好地解释了为什么aur软件包git-credential-gnomekeyring不见了,太糟糕了,以至于AUR中没有这样的信息。
ryenus

在ubuntu上,我没有git文件夹,/usr/share/只有gitweb和git-core。但是我使用的是Git 1.7.9。那是为什么...?
临时用户名

1
截至2017年在Arch上,只需安装libgnome-keyring就足够了(至少如果您使用的是gnome)。
ald.li

25

2016年第四季度更新:

  • Unix,Mac(Git 2.11+)

    git config --global credential.helper libsecret
    

(请参阅“ 将Git凭据帮助器与一起使用时出错gnome-keyring ”)

  • 视窗:

    git config --global credential.helper manager
    

(请参阅“ 如何在Windows的Git Bash控制台中注销? ”:这是使用最新的WindowsMicrosoft Git Credential Manager的Windows Git


原始答案(2012年)

适用于Windows,Mac和Unix平台的凭据帮助程序已在“ git-credential-helper”存储库中首次引入,现在已包含在git distro中

该存储库包含一组Git凭据助手(gitcredentials(7)),它们是git(或打算在将来提供)的一部分。

$ 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

构建时,它将安装在/path/to/git/credential目录中。

要使用此后端,可以通过设置将其添加到(全局)Git配置中

(对于Unix):

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

Windows注意:

我想您可以使一个程序在Windows上运行并调用“ pypi keyring 0.10 ”之类的库。
但这是后端,您不能直接在Git中使用它。

您正在使用的是一个“凭据帮助程序”(反过来,它将在Windows上调用所需的任何凭据API)。

适用于Windows的GitHub提供了这样的帮助程序(作为称为github的可执行文件),并且可以在Windows会话期间存储您的凭据。
从“适用于Windows的GitHub”窗口启动shell,您将看到键入“ git config --system -l”:

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

credential.helper=!github --credentials部分将称呼凭证助手为“ github”。

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

不是我要找的东西。答案应该仅为* nix。
marcosdsanchez 2012年

@marcosdsanchez好的,我已经编辑了答案,包括使用Git在Unix上设置和使用gnome-keyring。
VonC 2012年

我想使用git的1.8.0功能,该功能已经存在。不是第三方代码。谢谢。
marcosdsanchez 2012年

@marcosdsanchez,那么您需要编译github.com/git/git/tree/master/contrib/credential/gnome-keyring(与git打包在一起)。编译后,您将按照我的答案中的说明安装和使用它。
VonC 2012年

我猜没有内置的二进制文件吗?
marcosdsanchez 2012年

15

2018年10月更新

GNOME已弃用libgnome-keyring并将其替换为libsecret。提交https://github.com/git/git/commit/87d1353a6a添加了新的凭据帮助器/ usr / libexec / git-core / git-credential-libsecret。

git config --global credential.helper libsecret


2
可能这应该是对此处任何基于gnome-keyring的答案的评论。
Murmel

同意,gnome-keyring应相应地编辑基于答案的答案。也许只是排除整个选项。在Ubuntu 19.10上,这对我根本不起作用。
马里奥

11

对于Fedora上的任何人,我都稍微编辑了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
我很困惑,这不是已经包含在git包中了吗?那么,在fc19软件包git-1.8.3.1-1.fc19.x86_64中,此文件是什么。这里有此文件:/usr/libexec/git-core/git-credential-gnome-keyring
slm 2015年

10
在Fedora 21的git 2.1.0中,您可以简单地执行以下操作:git config --global credential.helper gnome-keyring
RedPoppy

7

只需将这两行添加到您的~/.gitconfig文件中:

[credential]
    helper = gnome-keyring

下次Git要求您输入密码时,输入的密码将保存到Gnome钥匙圈(您可以使用seahorse工具查看),此后将不再要求您输入密码。

假设您的Git版本足够新(如2.1.0),并且您使用的是Linux Fedora,RHEL或CentOS。对于旧版本或其他操作系统/发行版,请查看其他答案。


6
在Ubuntu 16.04中:git: 'credential-gnome-keyring' is not a git command.
Ferit

@Saibot:哎呀,你是对的。看起来Fedora / RHEL提供了此功能,而Ubuntu没有提供。因此,在这种情况下,James Ward(stackoverflow.com/a/14528360/2148773)的答案更好。
奥利弗·

2

某些发行版确实将此集成作为安装软件包附带提供,而无需任何编译。根据您的GNOME版本,您将需要安装软件包的一个gnome-keyring或多个libsecret版本,例如git-credential-gnome-keyring(OpenSUSE Leap 42.3)。

但是,这本身不会自动启用Git与GNOME密钥环的集成。您仍然必须将Git配置为使用此凭据存储方法:

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

在Ubuntu 19.10上,该gnome-keyring选项对我而言不再起作用,但是James Ward的使用说明libsecret仍然有效。但是,我对gnome-keyring此处使用的建议感到困惑:github.com/timhughes/git-credential-libsecret
Mario

libsecret(或find /usr -iname git-credential-libsecret给出的内容)是Gentoo Linux中的正确选项。请注意,dev-vcs/git必须使用出现USE=gnome-keyring
斯法卡

1

在Fedora上,您需要安装

$ sudo dnf install git-credential-libsecret

并编辑您的git配置以使用凭据助手。

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

仅供参考,该libsecret软件包最近已拆分,请参阅@rugk的帖子。这就是为什么用户需要重新安装此软件包的原因。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.