不确定我的 git 存储库存储文件的位置

不确定我的 git 存储库存储文件的位置

我已经创建了一个远程 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 [email protected]:myproject.git

然后上传一些文件

git push

再次尝试后发现存储库已经是最新的。

但是,我在远程服务器上四处查看,却找不到 git 存储这些文件的位置!它不在/var/www/html/nor中/home/git,我唯一能找到的是 HEAD 文件,其中包含我在 中进行的初始提交的 id /var/www/html/myproject.git/refs/heads/master。(所以我知道推送成功了)

这些文件可能在哪里?

答案1

答案是,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:以查看是否发生任何错误。

相关内容