Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
20
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

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

スクリプトなどで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ディレクトリを制御する場合は環境変数が良いのだろうなー。

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
20
Help us understand the problem. What are the problem?