Linux下ttyd使用Git提示Author identity unknown和fatal: $HOME not set问题的解决
我在ttyd下使用git commit -m 'xxx'
命令时,出现了一个无法识别git用户信息的错误。
具体报错信息如下:
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'user@hostname.(none)')
意思就是git的用户身份认证信息未知,需要用git config --global
进行配置。但我已经在系统中配置了git username&email,在本地终端中使用都正常,仅在ttyd中出现了这个bug。
那既然都提示要设置了,就先git config --global
设置一下,这时又出现了第二个报错。
fatal: $HOME not set
到这里基本就明白错误原因了,ttyd下git无法识别$HOME
环境变量,所以无法读取到~/.gitconfig
文件内配置的username&email信息。
解决方案
根据这个报错搜了一下解决方案,根据【stackoverflow上的这个帖子】,解决方案就是用git config --system
来设定git用户信息
git config --system user.email "[email protected]"
git config --system user.name "your name"
注意事项
这个方案只适合用在自己一个人使用的电脑主机/vps上,因为--system
配置的git用户信息是全局生效的,如果系统是多用户使用,那所有用户都会使用同一个git配置。这点务必留意。应该还有其它更合理的解决方案,但我的主机只有自己一个人用,所以用的这个方案。😄
查阅【git官方文档】,可以知道--system
参数是把配置信息写到/etc/gitconfig
文件,也就是全局生效,而--global
参数是把配置信息写到~/.gitconfig
文件,只针对当前用户生效。所以当ttyd下git无法识别$HOME
变量时,自然就无法读取到~/.gitconfig
文件了。
update:如果这个git repo在本地只有自己一个人用,那可以直接在在repo目录下git config user.name/user.email
,也就是这个仅针对这个repo配置用户信息。配置信息保存在这个repo的.git
目录下,可以放心push,不会上传。
--system
For writing options: write to system-wide $(prefix)/etc/gitconfig rather than the repository .git/config.
--global
For writing options: write to global ~/.gitconfig file rather than the repository .git/config, write to $XDG_CONFIG_HOME/git/config file if this file exists and the ~/.gitconfig file doesn’t.