我在本地计算机上设置了一个git存储库,在一个linode框上设置了一个裸存储库。在进行git推送时没有错误,但我没有在远程服务器上看到该文件。我遵循的命令序列如下:
在遥控器上:
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进行通信,并按预期设置密钥,我可以在没有密码的情况下登录。但是,该文件不会被复制到远程服务器。
由于
答案 0 :(得分:5)
如果你想同时推送到repo并让文件更新,你可以创建一个服务器端git hook来在文件被推送后检出这些文件。在服务器端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目录和已部署的文件位于不同的目录中。根据您希望的配置方式更新文件。
更多信息&amp;这里有一个详细的解释: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
答案 1 :(得分:4)
Git在服务器端不起作用。这些文件经过高度压缩并分组为块,因此无法找到特定文件。
要测试你的git服务器,在另一个目录中创建另一个克隆,看看app.py是否存在。
git clone abhijat@linode:~/dev dev2
答案 2 :(得分:0)
我正在研究一个项目,以显示虚拟FS上回购的分支/修订/标记的内容。它基于fuse和libgit2。目前尚处于初期阶段,但可以向您显示修订中的文件/目录及其内容。如果要求使用分支,则如果分支已移动,它将动态刷新虚拟FS。以防万一:早期阶段,所以没有LFS,没有子模块,没有...您在想什么高级功能?都不是。只是行话中的树木和斑点。