从Git目录外执行git命令
在使用脚本等执行git命令时,不想再需要特意切换到仓库根目录进行cd操作,因为这样太麻烦了。
解决方案
使用命令行选项
Git 1.8.5以降ならこっち
$ git -C /path/to/repo [command]
Git 1.8.5未満ならこっち
$ git --git-dir=/path/to/repo/.git --work-tree=/path/to/repo [command]
如果使用Git版本1.8.5或更高版本,则可以使用-C选项进行一次性操作,如果版本低于1.8.5,则需要使用git-dir和work-tree选项指定来执行操作。
参考:从工作目录之外进行git pull。
2. 使用环境变量
$ GIT_DIR=/path/to/repo/.git GIT_WORK_TREE=/path/to/repo git [command]
参考资料:Git的内部 – 环境变量
GIT_DIR 是 .git 文件夹的位置。如果没有指定,Git会一直向上遍历文件夹树,直到到达~或/目录,并在每个目录中查找.git文件夹。
GIT_WORK_TREE 是非裸仓库中工作目录的根路径。如果没有指定,将使用$GIT_DIR的父目录作为代替。
你觉得哪个更好呢?
我觉得无论哪个都可以。如果只是简单地执行一个命令的话,选项会更加简洁。
如果需要组合多个脚本或从脚本外部控制Git目录,环境变量应该更好。