总结:通过Git别名运行的命令的当前工作目录是错误的。
最简单的方法是使用如下Git别名来演示:
[alias]
pwd = !pwd
所以,git pwd
只是运行 bash 命令 pwd
。人们可能会认为这两个命令的输出应该是相同的。现在,让我们试着运行几次:
$ cd ~
$ pwd && git pwd
/home/limpchimp
/home/limpchimp # great!
$ mkdir foo && cd foo && git init
Initialized empty Git repository in /home/limpchimp/foo/.git/
$ pwd && git pwd
/home/limpchimp/foo
/home/limpchimp/foo # great!
$ mkdir bar && cd bar
$ pwd && git pwd
/home/limpchimp/foo/bar
/home/limpchimp/foo # uuhhhhhhhh...?
看起来git会将当前工作目录更改为第一个具有.git
文件夹的父目录(如果存在)。这非常棘手;它破坏了我编写的某些脚本,这些脚本旨在在特定目录中操作,并使我无法使用某些东西作为git别名。有没有解决方法?我应该如何修复它?