将~/.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定义为一个命令

我想在我的~/.gitconfig中将github.token的值设置为shell命令的结果。我目前有以下情况:

[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 \\\"