gitディレクトリ以外でgit pullを実行する 質問する

gitディレクトリ以外でgit pullを実行する 質問する

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 コマンドを呼び出すには、より多くのキーを押す必要があります。

  1. (cd ~/foo && git status)
    git --git-dir=~/foo/.git --work-tree=~/foo status
    GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status
  2. (cd ../..; git grep foo)
  3. for d in d1 d2 d3; do (cd $d && git svn rebase); done

上記の方法はスクリプトには適していますが、コマンドラインからの迅速な呼び出しには扱いにくいです。

この新しいオプションを使用すると、上記の操作をより少ないキーストロークで実行できます。

  1. git -C ~/foo status
  2. git -C ../.. grep foo
  3. 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_failgit

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()

おすすめ記事