将~/.gitconfig中的github.token别名为shell命令
我想在我的~/.gitconfig中将github.token的值设置为shell命令的结果。我目前有以下情况:将~/.gitconfig中的github.token别名为shell命令,git,bash,github,git-config,Git,Bash,Github,Git Config,我想在我的~/.gitconfig中将github.token的值设置为shell命令的结果。我目前有以下情况: [github] user = zmanji token = !echo ~/.githubtoken 2> /dev/null 但是,git config github.token不会返回~/.githubtoken文件的内容,而是返回命令本身。我怎样才能使它按预期工作 编辑:我只是想说清楚,我正在努力实现所暗示的: 您还可以将github.token定义为一个命令
[github]
user = zmanji
token = !echo ~/.githubtoken 2> /dev/null
但是,git config github.token不会返回~/.githubtoken文件的内容,而是返回命令本身。我怎样才能使它按预期工作
编辑:我只是想说清楚,我正在努力实现所暗示的:
您还可以将github.token定义为一个命令,通过将变量设置为前缀为的命令字符串,返回stdout上的实际令牌代码>
从中可以推断,只有git-config-alias.*
可以定义shell命令
可能是在说一个叫token的别名
git config alias.token '!security 2>&1 >/dev/null find-generic-password -gs github.token | ruby -e 'print $1 if STDIN.gets =~ /^password: \\\"(.*)\\\"$/''
它将用于快速获取其GitHub令牌的价值。
然后,通过经典的git config github.token xxx
将返回值分配给github.token
,这里的问题是他没有在gitconfig设置中设置令牌。他正在使用。这是git命令的包装器,它允许您拥有GITHUB\u用户
和GITHUB\u令牌
环境变量。这将覆盖本地.gitconfig
文件中的设置
然后,为了使其无缝连接,您在用户界面中指向别名为alias git=hub
的用户。然后,您应该能够获取一个本地文件,在其中设置环境变量,并将存储库与您的所有私人信息一起推送到公共世界
**注意:对于OSX上的自制用户,您可以通过brew install hub
安装该工具,而不是将我的GitHub令牌存储在文件中,我将其存储在我的OS X密钥链中,并按如下方式获取它(我的.gitconfig
中的代码片段):
尝试cat
而不是echo
?@Zameer-我不再相信我的cat
答案是正确的。测试。。。(在确定之前,我已经删除了我的答案。)我的目标是让git config github.token返回我的令牌,而不将其存储在my.gitconfig中。似乎其他人也在这么做:。@Zameer,你也试过!sh-c“echo$GITHUB\u令牌”
而不是!echo
直接返回?是的,返回字符串“!sh-c'echo$GITHUB_TOKEN'”而不是env变量的值。@Zameer:正是我得到的结果。换句话说,我不确定它是否真的有效。有人能告诉我什么是github.token
?我听说过github.user
,但是github.token
有什么价值呢?我没有尝试使用hub。我试图让git config给我一个我没有显式存储在文件中的值。很公平,看起来你只是试图将github令牌的值存储在gitconfig之外,这样你就可以把它放在自己的repo中(这是我发现它时的意图)。无论如何,祝你好运!就是这样。这就是为什么我希望我的gitconfig给我一个没有存储在其中的值。这样我就可以在不泄露公共信息的情况下分享我的整个gitconfig。我认为,从长远来看,使用您建议的环境变量将是一个更好的解决方案,因为我可以在我的bash_配置文件或bashrc中使用此功能。您正在运行哪个版本的git?v1.7.1(很抱歉延迟,我刚刚看到了您的问题)。
[github]
token = !security find-generic-password -gs \"GitHub API Token\" 2>&1 >/dev/null | awk '/password/ {print $2}' | tr -d \\\"