git リポジトリであるディレクトリ があるとします。の内部から、ディレクトリをターゲットにして/X/Y
のようなコマンドを呼び出すことは可能ですか?git pull
/X
/X/Y
編集:私が特に疑問に思ったのは、ディレクトリを変更せずに git コマンドを使用してこれを行うことは可能かどうかです。
注:私は受け入れましたVonCの回答以前のオプションよりもずっとエレガントです。Git 1.8.5より古いバージョンを使っている人は、bstpierreの回答は以下。
ベストアンサー1
起動git 1.8.5 (2013年第4四半期)、ディレクトリを変更せずに Git コマンドを使用できるようになります。
" " と同様に
make -C <directory>
、"git -C <directory> ...
" は Git に他の操作を実行する前にそこに行くように指示します。
見るコミット 44e1e4によるナズリ・ラムリー:
現在のディレクトリを離れずに別のディレクトリで Git コマンドを呼び出すには、より多くのキーを押す必要があります。
(cd ~/foo && git status)
git --git-dir=~/foo/.git --work-tree=~/foo status
GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status(cd ../..; git grep foo)
for d in d1 d2 d3; do (cd $d && git svn rebase); done
上記の方法はスクリプトには適していますが、コマンドラインからの迅速な呼び出しには扱いにくいです。
この新しいオプションを使用すると、上記の操作をより少ないキーストロークで実行できます。
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
Git 2.3.4(2015年3月)以降、コミット 6a536e2によるカルティク・ナヤック ( KarthikNayak
)は、が空の場合、「 」を何もしないものとしてgit
扱います。git -C '<path>'
<path>
'
git -C ""
' はエラー "Cannot change to ''
" で役に立たずに終了しますが、シェルは cd ""' を no-op として扱います。
シェルの動作を前例として、git
-C ""' も no-op として扱うように指導します。
4年後、Git 2.23(2019年第3四半期)では、「git -C ""
」が動作し、ディレクトリを変更しないことが文書化されています。
git
これは、6a536e2 ( :が空のgit -C '<path>'
場合には " " を no-op として扱う<path>
、2015-03-06、Git v2.3.4)以降、そのように動作しています。
つまりドキュメント現在(最終的に)含まれるもの:
<path>
' ' が存在するが空の場合(例-C ""
)、現在の作業ディレクトリは変更されません。
git -C
例として、Git 2.26 (2020 年第 1 四半期) での使用を確認できます。
見るコミット b441717、コミット 9291e63、コミット 5236fce、コミット 10812c2、コミット 62d58cd、コミット b87b02c、コミット 9b92070、コミット 3595d10、コミット f511bc0、コミット f6041ab、コミット f46c243、コミット 99c049b、コミット 3738439、コミット 7717242、コミット b8afb90(2019年12月20日)デントン・リュー ( Denton-L
)(合併者:
ジュニオ・C・ハマノ -- gitster
--でコミット 381e8e9、2020年2月5日)
t1507
: 列をなしてfull_name()
署名者: Denton Liu
以前は、 を実行していました
test_must_fail full_name
。ただし、test_must_fail
は git コマンドでのみ使用する必要があります。コマンドで直接使用できるように
インライン化します。full_name()
test_must_fail
git
full_name()
導入されたのは28fb84382b(「<branch>@{upstream}
表記法の導入」、2009-09-10、Git v1.7.0-rc0 --マージ)、このgit -C
オプションはまだ利用できませんでした(44e1e4d67d("git
: -C オプションで指定されたディレクトリで実行", 2013-09-09, Git v1.8.5-rc0 --マージ記載されているバッチ #5))。
その結果、ヘルパー関数によってcd
毎回手動で する必要がなくなりました。ただし、git -C
が利用できるようになったため、代わりに を使用し、 をインライン化することができますfull_name()
。