You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Makefile中自动向git credential-osxkeychain发送ENTER按键?

解决Makefile中自动获取Git凭据的无交互方案

核心思路

git credential-osxkeychain get 需要接收一个空输入(回车)才能输出凭据,用 echo 命令自动生成换行符替代手动按回车操作;再通过文本提取工具从输出中拆分出用户名和PAT。

修改后的Makefile代码

local.test:
	mycommand --envs GIT_USER_NAME=$$(echo | git credential-osxkeychain get | grep username | cut -d'=' -f2) --envs GIT_PERSONAL_ACCESS_TOKEN=$$(echo | git credential-osxkeychain get | grep password | cut -d'=' -f2)

细节说明

  • echo | git credential-osxkeychain get:通过管道自动给credential命令传入换行符,避免交互等待
  • grep username/grep password:从输出中筛选出包含用户名和密码的行
  • cut -d'=' -f2:以等号为分隔符,提取等号后的实际用户名/PAT
  • Makefile中用 $$ 替代单个 $:因为Makefile会把单个 $ 解析为自身的变量引用,双美元符号才会传递给Shell执行命令

优化建议

如果不想重复执行两次git credential-osxkeychain get,可以先把凭据存到临时变量里,提升效率:

local.test:
	@CREDENTIALS=$$(echo | git credential-osxkeychain get); \
	USER_NAME=$$(echo "$$CREDENTIALS" | grep username | cut -d'=' -f2); \
	PAT=$$(echo "$$CREDENTIALS" | grep password | cut -d'=' -f2); \
	mycommand --envs GIT_USER_NAME=$$USER_NAME --envs GIT_PERSONAL_ACCESS_TOKEN=$$PAT
  • 用@开头可以隐藏Makefile执行时的命令输出,让终端更整洁
  • 用分号和反斜杠把命令连起来,确保在同一个Shell进程中执行,变量能共享

内容的提问来源于stack exchange,提问作者Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:30:57