Help us understand the problem. What is going on with this article?

Gitディレクトリ外からgitコマンドを実行する

More than 1 year has passed since last update.

スクリプトなどでgitコマンドを実行する際、わざわざリポジトリルートにcdするのが野暮ったいので辞めたい。

方法

1. コマンドラインオプションを利用する

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のオプション指定でいけるらしい
参考: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 の親ディレクトリが代わりに使用されます。

どっちがいいの?

正直どっちでもいいと思う。
単純にコマンド1発叩くだけならオプションの方がスマートに感じる。
複数のスクリプトを組み合わせる場合や、スクリプト外部からGitディレクトリを制御する場合は環境変数が良いのだろうなー。

paty-fakename
エンジニアっぽい仕事をしていて、なんとなく記事を投稿しようと思ったんです。
http://heart-shaped-chocolate.hatenablog.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away