簡體   English   中英

帶有 --git-dir= 的 git 導致“不是 git 存儲庫”

[英]git with --git-dir= results in 'not a git repository'

我在我的 iOS 應用程序之一中有一個腳本,它應該獲取 git 修訂哈希並將其放入版本號。 在這個腳本中,我運行 git --git-dir="$PROJECT_DIR" show -s --pretty=format:%h 。 但是,我收到消息說該目錄不是 git 存儲庫。 如果我回顯 PROJECT_DIR 變量並轉到終端,則以下工作:

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

不起作用的是:

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

我錯過了什么嗎? 文檔指出,我可以使用 --git-dir 指定 git 存儲庫的路徑,並且指定的路徑顯然是一個 git 存儲庫,因為如果我首先 cd 進入該路徑,所有 git 命令都可以正常工作。 但是,如果我不在此路徑中,則指定 --git-dir 不起作用。

最好的問候,邁克爾

使用--git-dir ,您需要指向存儲庫的.git文件夾。 嘗試:

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

--git-dir上的文檔說:

--git-dir=

設置存儲庫的路徑(“.git”目錄)。 這也可以通過設置 GIT_DIR 環境變量來控制。 它可以是當前工作目錄的絕對路徑或相對路徑。

我曾經有一個問題,記得自己。 為了幫助我記住要做什么,我嘗試記住該選項正在詢問它想要的內容: .git目錄 (git-dir) 的路徑。

除了--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

您正在尋找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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM