我在 Debian Stretch 服务器的 /var/www/example.com/html 目录中托管一个 git 服务器。
如果我首先通过在我的 Windows 10 本地计算机上执行以下操作来克隆 git repo,我就能够在本地计算机上将文件推送到此服务器:
C:\Users\User\Desktop\AnotherRepoTest\test>git clone git@IP_Of_Remote_server:/var/www/example.com/html/repo.git
Cloning into 'repo'...
git@IP_Of_Remote_server's password:
remote: Counting objects: 20, done.
Receiving objects: 100% (20/20), 2.30 KiB | 1.15 MiB/s, done.
remote: Compressing objects: 75% (9/12) Resolving deltas: 100% (4/4), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 20 (delta 4), reused 0 (delta 0)
C:\Users\User\Desktop\AnotherRepoTest\test>
这是可行的,它从 repo 中获取文件,但如果我创建一个新文件,然后将该文件推送到主分支,则远程服务器将不会在远程 repo 目录中显示这个新文件。
C:\Users\User\Desktop\AnotherRepoTest\test>cd repo
C:\Users\User\Desktop\AnotherRepoTest\test\repo>echo "Hello, world." > AddThisFile.txt
C:\Users\User\Desktop\AnotherRepoTest\test\repo>git add --all
C:\Users\User\Desktop\AnotherRepoTest\test\repo>git commit -m "New Commit"
[master e5a21b6] New Commit
1 file changed, 1 insertion(+)
create mode 100644 AddThisFile.txt
C:\Users\User\Desktop\AnotherRepoTest\test\repo>git push -u origin master
git@IP_Of_Remote_server's password:
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 292 bytes | 292.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To IP_Of_Remote_server:/var/www/example.com/html/repo.git
78da987..e5a21b6 master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
C:\Users\User\Desktop\AnotherRepoTest\test\repo>
如您所见,一切都按预期进行。现在,如果我们检查远程服务器 repo 目录,这个新文本文件没有添加到 /var/www/example.com/html/ 中
但是如果我在本地机器上的另一个文件夹中再次克隆 repo,则该文本文件也会被克隆。
所以问题是我无法在远程目录中找到此文件。即使我运行:
root@ohwell:/var/www# locate AddThisFile.txt
root@ohwell:/var/www#
我仅向 git 用户授予了 git-shell 访问权限,并赋予了 /var/www 目录的正确权限。我甚至重新启动了服务器以查看是否有更改,但没有成功。为什么我无法在远程服务器上找到此文件?我遗漏了什么?
我按照以下教程设置了一个裸仓库:
https://www.linux.com/learn/how-run-your-own-git-server
https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
答案1
- 定位使用的数据库可能未更新
- 将更改推送到 repo 后,您需要让您的服务器以某种方式提取这些更改。