4

我在本地机器上设置了一个 git 存储库,在一个 linode 盒子上设置了一个裸存储库。执行 git push 时没有错误,但我在远程服务器上看不到该文件。我遵循的命令序列如下:

在远程:

abhijat@kangaroo:~$ mkdir dev
abhijat@kangaroo:~$ cd dev && git init --bare

在本地机器上:

krypton:test abhijat$ git init
krypton:test abhijat$ vim app.py
krypton:test abhijat$ git init
Initialized empty Git repository in /Users/abhijat/dev/test/.git/
krypton:test abhijat$ git add .
krypton:test abhijat$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   app.py
#
krypton:test abhijat$ git commit -m 'test first commit'
[master (root-commit) 3bee148] test first commit
 1 files changed, 16 insertions(+), 0 deletions(-)
 create mode 100644 app.py
krypton:test abhijat$ git remote add origin abhijat@linode:~/dev
krypton:test abhijat$ git push -v origin master
Pushing to abhijat@linode:~/dev
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 298 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
To abhijat@linode:~/dev
   01a0e08..2273564  master -> master

但是当我检查 linode 时,该文件不存在:

abhijat@kangaroo:~/dev$ ls -ltr
total 32
drwxr-xr-x  4 abhijat abhijat 4096 Sep  8 10:17 refs
drwxr-xr-x  2 abhijat abhijat 4096 Sep  8 10:17 info
drwxr-xr-x  2 abhijat abhijat 4096 Sep  8 10:17 hooks
-rw-r--r--  1 abhijat abhijat   73 Sep  8 10:17 description
drwxr-xr-x  2 abhijat abhijat 4096 Sep  8 10:17 branches
-rw-r--r--  1 abhijat abhijat   23 Sep  8 10:17 HEAD
-rw-r--r--  1 abhijat abhijat   66 Sep  8 10:57 config
drwxr-xr-x 12 abhijat abhijat 4096 Sep  8 11:03 objects
abhijat@kangaroo:~/dev$ find . -name app.py
abhijat@kangaroo:~/dev$

我在这里遗漏了一些明显的东西吗?通信是通过 ssh 进行的,并且密钥已按预期设置,我无需密码即可登录。但是,该文件不会被复制到远程服务器。

谢谢

4

3 回答 3

5

如果您想同时推送到 repo 并更新文件,您可以创建一个服务器端 git 挂钩以在文件被推送后签出。在服务器端的 git/hooks/目录中创建一个名为post-receive并添加以下代码的文件:

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

然后使用给文件适当的权限chmod +x post-receive

注意:上面的代码假设你的 git 目录和部署的文件在不同的目录中。根据您想要的配置方式更新文件。

更多信息和详细说明: https ://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps

于 2015-01-08T19:11:48.917 回答
4

Git 在服务器端不是这样工作的。这些文件被高度压缩并分组为块,因此您无法找到特定文件。

要测试您的 git 服务器,请在另一个目录中创建另一个克隆,然后查看 app.py 是否存在。

git clone abhijat@linode:~/dev dev2
于 2012-09-08T11:30:04.817 回答
0

我正在开发一个项目,以在虚拟 FS 上呈现 repo 的分支/修订/标签的内容。它基于 fuse 和 libgit2。它目前处于非常早期的阶段,但它可以向您显示修订版中的文件/目录及其内容。如果您要求使用一个分支,如果该分支被移动,它将即时刷新虚拟 FS。以防万一:早期阶段,所以没有 LFS,没有子模块,没有......你在想什么花哨的功能?都不是。只是 git 术语中的树和 blob。

https://github.com/eantoranz/gitmod

于 2020-06-27T00:18:42.420 回答