我的.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%%HOMEPATH
是P:\
,果然,新别名st = status
位于.gitconfig
文件中,但不是co = commit -am
},这很奇怪,因为昨天我创建co
别名时,我能够成功调用它。
答案 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
,你就可以了。