Git无法识别别名

时间:2015-10-20 18:02:10

标签: git bash alias

我的.gitconfig文件如下:

[user]
    name = myname
    email = asdf@xyz.com
[alias]
    co = commit -am

当我在Git Bash中时,我输入:

git co "Macro changes"

我收到此错误消息:

git: 'co' is not a git command.

为什么不识别别名?

编辑:我正在运行Windows 7. .gitconfig文件位于C:\Users\[myuserID]\.gitconfig

奇怪的是,我刚刚创建了另一个别名:

git config --global alias.st status

然后我跑了

git st

哪个有效。但是当我打开C:\Users\[myuserID]\.gitconfig时,新的别名没有列在那里。那么全局配置文件可能在其他地方吗?

C:\Program Files (x86)\Git\etc\profile中,有HOME的定义:

# Set up USER's home directory
if [ -z "$HOME" -o ! -d "$HOME" ]; then
  HOME="$HOMEDRIVE$HOMEPATH"
  if [ -z "$HOME" -o ! -d "$HOME" ]; then
    HOME="$USERPROFILE"
  fi
fi

Windows命令提示符告诉我%HOMEDRIVE%%HOMEPATHP:\,果然,新别名st = status位于.gitconfig文件中,但不是co = commit -am },这很奇怪,因为昨天我创建co别名时,我能够成功调用它。

2 个答案:

答案 0 :(得分:1)

Windows上的Bash几乎意味着你正在使用cygwin,对吗?

如果是这样,那么gg的cygwin版本需要将全局.gitconfig文件放在cygwin用户的主目录中,例如c:\cygwin\home\username\.gitconfig或安装了cygwin的任何地方(运行echo $HOME/.gitconfig以获得准确值)。

编辑:在C:\Program Files (x86)\Git的git安装路径上更新它显然不是cygwin git,但是你已经发现它也使用环境变量HOME作为存储全局.gitconfig的目标,尽管具有不同的价值。

关于昨天我创建了co alias时,我能够成功调用它,是否可以将该别名添加到存储库中的.gitconfig文件中?

答案 1 :(得分:1)

只需检查git bash中{$APPTYPE CONSOLE} uses Winapi.ActiveX; // for CoTaskMemFree const dllname = 'ClassLibrary1.dll'; function Concatenate(str1, str2: PWideChar): PWideChar; stdcall; external dllname; procedure Main; var res: PWideChar; str: string; begin res := Concatenate('foo', 'bar'); str := res; CoTaskMemFree(res); Writeln(Str); end; begin Main; Readln; end. 的值。

如果它引用$HOME,您的别名将被识别。

同时确保您使用的是最新的bash(not the old one from msysgit):在任意位置解压缩PortableGit-2.6.2-64-bit.7z.exe,并将C:\Users\[myuserID]添加到您的路径中。

然后拨打C:\path\to\PortableGit-2.6.2-64-bit,你就可以了。