使用Git将代码上传到远程服务器

在开发服务器端程序时,我们需要将代码上传到远程服务器,scp固然方便,但却无法协同开发,那么此时git就显得尤为重要了。本文就讲述如何不搭建git服务器,直接将代码提交到远程服务器的过程。


登录远程服务器,然后在指定目录下新建仓库(这里我们在/opt/www/git/目录下新建test.git仓库):

1
# git init --bare test.git

在本地工程根目录下初始化git并添加远程仓库

1
2
# git init
# git remote add Server git@服务器的IP地址:/opt/www/git/test.git

然后提交代码:

1
2
3
# git add .
# git commit -m "commit code"
# git push Server(远程仓库名) master

PS: 初次提交时需要输入邮箱和密码!

提交后发现出现以下错误:

1
2
3
4
5
6
Counting objects: 654, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (646/646), done.
remote: fatal: Unable to create temporary file '/opt/www/git/test.git/./objects/pack/tmp_pack_XXXXXX': ????
error: pack-objects died of signal 13
error: failed to push some refs to 'git@服务器的IP地址:/opt/www/git/test.git'

这是权限问题导致的,可能你创建远程仓库的时候使用的不是git账户,但是我们添加的远程仓库使用的是git账号,导致git用户没有写权限。只要将仓库的拥有者修改为git或者添加远程仓库时使用创建远程仓库的用户即可:

1
# chown -Rh git:git /opt/www/git/test.git

再次提交便可提交成功,但是却发现没有上传的文件,因为git init –bare创建的仓库只保存git历史提交的版本信息,而不允许用户进行git操作。如果进行git操作,将会提示:“fatal: /usr/libexec/git-core/git-pull cannot be used without a working tree.”错误。我们只需要clone一下这个仓库即可:

1
# git clone /opt/www/git/test.git

在clone的工程中,发现有上传的新文件了。至此,你的代码已经成功上传到服务器了,以后本地修改的内容直接提交上传,然后在clone的工程中更新合并即可。

一般情况下,我们在服务器端创建的仓库只是为了提交代码,要获取上传的新代码第一次还是要git clone, 以后git pull获取新代码即可。

,