フォルダー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 statusgit -C ../.. grep foofor 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 -バッシュシェルで?