フォルダーA(gitプロジェクト)にいくつかのphpファイルがあります。これらのphpファイルで「git log」を実行したいが、フォルダーBの場合。フォルダーBは別のgitプロジェクトです(ログはAとBで異なります)。
シェルコマンドでどうすればいいですか?
フォルダーA(gitプロジェクト)にいくつかのphpファイルがあります。これらのphpファイルで「git log」を実行したいが、フォルダーBの場合。フォルダーBは別のgitプロジェクトです(ログはAとBで異なります)。
シェルコマンドでどうすればいいですか?
回答:
からman git
:
--git-dir
コマンドを渡す前に、パラメータを使用してこれを行うことができます。
git --git-dir /foo/bar/.git log
(.git
ディレクトリを指定する必要があります。)ドキュメントから:
--git-dir=<path>
リポジトリへのパスを設定します。これは、
GIT_DIR
環境変数を設定することによっても制御できます。現在の作業ディレクトリへの絶対パスまたは相対パスを指定できます。
.git
ディレクトリを参照する必要があります。お試しくださいgit --git-dir=/foo/bar/.git log
。
log
。試してくださいgit --git-dir /foo/someclone/.git status
-gitは完全に混乱します。-C
下記の通りお勧めします。
man git
は私のシステムで実行します(2.3.5)。しかし、@ VonCの答えははるかにうまく機能します。
gitの1.8.5(Q4 2013) 、あなたの代わりに設定に、別の選択肢を持つことになります--git-dir
。フォルダーで
実行する場合は、次のように入力git log
しますB
。
git -C B log
「
make -C <directory>
」、「git -C <directory> ...
」のように、Gitに他のことをする前にそこに行くように指示します。
参照してください44e1e4コミットによってナズリRamliy:
現在のディレクトリを離れることなく別のディレクトリで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
log
。
-R
相対パスを混乱させるので、Mercurialのオプションほど優れていません。たとえば、タイプgit -C subdir log subdir/myfile
するとエラーになります(ファイルを探すためsubdir/subdir/myfile
)。
for p in (find . -type d -name ".git"); do git --git-dir $p ...; done
git
それが私や入力したものより賢いとは思わないでしょう。「これをディレクトリXで実行する」と言っても、「時を除いて、何か他のことをする」という意味ではありません。
cd /other/dir && git log && cd -
バッシュシェルで?