如何使用Git将文件推送到远程服务器
我正在尝试将文件推送到远程服务器。 到目前为止我已经试过了 远程服务器如何使用Git将文件推送到远程服务器,git,Git,我正在尝试将文件推送到远程服务器。 到目前为止我已经试过了 远程服务器 $ cd /var $ mkdir repo && cd repo $ mkdir test.git && cd test.git $ git init --bare $ cd hooks $ touch post-receive $ sudo chmod +x post-receive 后期接收 #!/bin/sh git --work-tree=/var/www/testsite --g
$ cd /var
$ mkdir repo && cd repo
$ mkdir test.git && cd test.git
$ git init --bare
$ cd hooks
$ touch post-receive
$ sudo chmod +x post-receive
后期接收
#!/bin/sh
git --work-tree=/var/www/testsite --git-dir=/var/repo/test.git checkout -f
本地
$ cd /localrepo
$ git remote add test ssh://user@my-site.com/var/repo/test.git
$ git push test main
输出
Enumerating objects: 917, done.
Counting objects: 100% (917/917), done.
Delta compression using up to 12 threads
Compressing objects: 100% (879/879), done.
Writing objects: 100% (917/917), 3.93 MiB | 2.61 MiB/s, done.
Total 917 (delta 518), reused 0 (delta 0)
remote: Resolving deltas: 100% (518/518), done.
To ssh://user@my-site.com/var/repo/test.git
* [new branch] main -> main
期待
我希望推送之后,我能够在远程服务器上的/var/www/testsite
中看到文件,但我在任何地方都找不到任何文件
似乎post receive
不起作用
实际上,我正试图按照第12步进行操作,问题也在于服务器上的活动分支是“主”分支,而我正在推到“主”分支。(感谢@kosist指出这一点) 解决方案 使用更改服务器上的活动分支
echo ref: refs/heads/main > HEAD
或
或者在post receive
hook(我选择的选项)中指定分支
我没有看到你提交任何东西技术上你根本不能推送文件,你只能推送提交。但实际上您正在推送一些提交,以便创建
main
分支。您的post接收挂钩似乎没有运行。调试这有点棘手,通常必须在服务器上完成。服务器上的活动分支是什么?是main
,还是master
?@kosist活动分支是main
@AlexLarionov正在推送的提交是推送到git hub的对origin main
的提交。我被告知这样做应该在我的远程服务器上创建一个副本
git symbolic-ref HEAD refs/heads/main
git --work-tree=/var/www/laravel --git-dir=/var/repo/site.git checkout -f main