Git

不確定我的 git 儲存庫在哪裡儲存文件

  • November 9, 2012

我已經創建了一個遠端 git 儲存庫

mkdir /var/www/html/myproject.git
chmod 0770 /var/www/html/myproject.git
ln -s /var/www/html/myproject.git myproject.git
cd myproject.git
git --bare init

並成功連接到它並將其複製到我自己的機器上

git clone git@myserver.co.uk:myproject.git

然後上傳一些文件到它

git push

再次嘗試時顯示儲存庫已經是最新的。

但是,我在遠端伺服器上環顧四周,實際上找不到 git 儲存這些文件的位置!它不在/var/www/html/也不/home/git,我唯一設法找到的是 HEAD 文件,其中包含我在/var/www/html/myproject.git/refs/heads/master. (所以我知道推送有效)

文件可能在哪裡?

答案實際上是objects/pack在裸儲存庫中時,所有文件都作為散列文件儲存在目錄中。您不能直接從那裡獲取文件。

如果有人偶然嘗試做我所做的事情並且在伺服器上有一組可由 git 管理的文件(例如,Web 伺服器),那麼您需要這樣做:

複製您希望文件可訪問的儲存庫(確保 git 可以寫入它,尤其是裡面的 .git 目錄)

mkdir /path/to/clone/repo
chmod -R 0775 /path/to/clone/repo
cd /path/to/clone/repo
git clone /path/to/bare/repo.git

在包含以下行的裸儲存庫中創建一個新的更新後掛鉤:

vi /path/to/bare/repo.git/hooks/post-update
#!/bin/sh
# Update the real-file cloned repository
unset GIT_DIR
cd /path/to/cloned/repo
git fetch
git reset --hard

確保它是可執行的

chmod a+x /path/to/bare/repo.git/hooks/post-update

將送出推送到裸儲存庫並記下以 開頭的行remote:以查看是否發生任何錯誤。

引用自:https://serverfault.com/questions/446302