33

iOSアプリの1つに、gitリビジョンハッシュを取得してバージョン番号に入れるスクリプトがあります。このスクリプトでは、git --git-dir = "$ PROJECT_DIR" show -s --pretty = format:%hを実行します。ただし、ディレクトリがgitリポジトリではないというメッセージが表示されます。PROJECT_DIR varをエコーし​​てターミナルに移動すると、次のように機能します。

cd projectDirPath
git show -s --pretty=format:%h

動作しないのは次のとおりです。

git --git-dir=projectDirPath show -s --pretty=format:%h

私は何かが足りないのですか?ドキュメントには、-git-dirを使用してgitリポジトリへのパスを指定でき、最初にそのパスにcdした場合、すべてのgitコマンドが問題なく機能するため、指定されたパスは明らかにgitリポジトリであると記載されています。ただし、このパスにいない場合は、-git-dirを指定しても機能しません。

4

3 に答える 3

45

を使用する場合は、リポジトリ--git-dirのフォルダを指定する必要があります。.git試す:

git --git-dir=projectDirPath/.git show -s --pretty=format:%h

のドキュメントに--git-dirは次のように書かれています。

--git-dir =

リポジトリ( ".git"ディレクトリ)へのパスを設定します。これは、GIT_DIR環境変数を設定することによっても制御できます。現在の作業ディレクトリへの絶対パスまたは相対パスにすることができます。

私はこれを自分で思い出すのに問題がありました。私が何をすべきかを思い出すのを助けるために、私はオプションがそれが望むものを正確に要求していることを思い出そうとします:.gitディレクトリへのパス(git-dir)。

于 2012-10-14T10:40:03.457 に答える
3

git-Cコマンドラインオプションを探しています。

-C <path>

現在の作業ディレクトリの代わりにgitが開始されたかのように実行します。複数の-Cオプションが指定されている場合、後続の非絶対値-C <path>はそれぞれ、前のに関連して解釈され-C <path>ます。<path>が存在するが空の場合、たとえば 、-C ""現在の作業ディレクトリは変更されません。

--git-dir このオプションは、のようなパス名を期待するオプションに影響し--work-tree、パス名の解釈は、オプションによって引き起こされた作業ディレクトリに関連して行われ-C ます。たとえば、次の呼び出しは同等です。

git --git-dir=a.git --work-tree=b -C c status
git --git-dir=c/a.git --work-tree=c/b status
于 2020-02-05T20:36:24.473 に答える
2

とは別に--git-dir、設定--work-treeも役立つ場合があります。スクリプトの場合、関連する環境を使用することをお勧めします(より簡単です)。

#!/bin/bash -ex
export GIT_WORK_TREE=/path/to/repo
export GIT_DIR=/path/to/repo/.git
git show -s --pretty=format:%h
于 2017-05-18T19:45:08.180 に答える