一般做一个私人的项目,不希望开源的,是不会放在GitHub上的,这个时候我们需要建里一个自己的Git远程服务器,方便小组成员开发。
这里以Centos云服务器为例:
第一步
如果自己的服务器没有git账号,可以先配置一个git账号(当然不用git账号也可以)
$ sudo useradd git
$ sudo passwd git 123456 //设置git账号的密码
第二步
创建一个git仓库
$ mkdir /git
$ cd /git
$ git init --bare test.git
这里要说一下,git init 和git init –bare 的区别:
git init 创建的仓库下 test目录是这样子的
而使用 git init –bare 创建的仓库test2目录是这样子的
可以看到,git init 是多一个.git 文件夹,而git所有的文件都是.git文件夹下,而git init
–bare 则是将git的文件直接放在仓库根目录下。
所以git init –bare 创建的仓库是裸仓库,没有项目的源文件,只有git的文件,这个仓库test 是不能执行git的命令,没有git add ,git commit 等等。你也无法修改编辑项目的文件。所以他只是一个共享的储存空间而已。
而git init 创建的普通仓库,里面是有项目源文件的
index.txt, hhh 等等都是你的项目文件。所以git init 创建的普通仓库是有工作空间的,就是work-tree ,而git init –bare是没有工作空间的。
这里还要注意,我们一般使用git init –bare 比较好,git init 有两点不好:
1.因为使用git init 创建的仓库是可以用git操作的嘛,如果当前master正在被用户操作,那么分支如果 git push master:master 那么就会爆炸,上传不上去。master不能同时被两个人操作,对吧。
2.分支push到远程仓库之后,我们在仓库里是没有办法看到最新的内容的,必须要
git reset --hard
执行这个命令,在仓库的目录下,也就是工作区,才会更新,看到最新修改的内容。
git reset –hard 是撤回到历史版本,本地源码会变成上一个版本的内容。每次更新都要
执行。
**在用git init 创建的仓库的时候,你git push 会遇到
! [remote rejected] master -> master (branch is currently checked out)**
需要运行
git config receive.denycurrentbranch ignore
这个是允许接受远程文件。
有时候push不上去,是因为文件夹没有权限,需要chomd 7777 文件夹
好了回到正题:
第三步
创建git用户
$ sudo chown -R git:git test.git
这里说明一下,为什么要创建git用户,因为在远程分支,你是用git账号进行提交的,如果你的仓库文件的用户不是git的话,是root用户或者别的用户,那么你git push ,它是不允许的,因为你的git用户没有权限。你可以给这个文件创立git用户,或者修改文件夹的权限为所有用户都可以更改
第四步
我们就可以远程,直接git clone了。
git clone git@139.196.126.76:/git/test.git
然后就可以上传文件,下载文件啦。
搭建完Git远程服务器,那小组成员一般是怎么用Git开发的呢?
下一篇会作介绍:
http://blog.csdn.net/Dacc123/article/details/78112166