从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目录,环境变量应该更好。

广告
将在 10 秒后关闭
bannerAds