如何在服务器上搭建git服务器

如何在服务器上搭建git服务器,第1张

Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在windows下的开发要把自己的Git仓库共享出去的话,就必 须做SSH服务器。

一、安装GIT

Windows下使用msysgit,

本文使用Git-178-preview20111206exe 安装要点步骤

安装完成后,可以使用Git bash在命令行模式下操作git

二、安装CopSSH

安装CopSSH之前先确保防火墙开启了SSH端口,这个虽然不影响CopSSH的安装,但是影响SSH访问,所以写在前面。

CopSSH是windows下的SSH服务器软件,下载地址baidu之,本文使用的是Copssh_410_Installerexe,

安装完成后,到控制面板中新建一个管理员账户root,用这个账户来共享SSH。然后你在账户管理中会看到之前的SvcCOPSSH账户。

将root用户添加到CopSSH用户中,为简单操作,允许使用密码认证方式

若是不允许密码认证,则需要使用公钥密钥方式认证,

三、CopSSH中使用GIT

现在已经安装GIT和CopSSH,接下来需要做的就是让CopSSH可以使用GIT的命令,这样不仅能够远程SSH管理GIT服务器,而且可以将GIT仓库通过SSH共享。具体的操作方法是将GIT的某些命令程序和动态链接库复制到CopSSH安装目录下即可。

l 将$ Git\libexec\git-core目录下的gitexe , git-receive-packexe , git-upload-archiveexe , git-upload-packexe复制到$ICW\bin目录下

l 将$Git\bin目录下的libiconv-2dll复制到$ICW\bin目录下

重启CopSSH即可

git协作开发,不是以用户名和密码的方式

根据git所使用的协议,如果是ssh 那么方式就应该为 git@youdomaincom:xxxxxxgit的方式,如果是这样,那么配置了公钥那么就可以直接访问了,不需要用户名和密码,如果是http/https的方式,那么验证的就是你登陆的用户名和密码,著名的gitlab 可以同时使用这两种方式,不需要你亲自去配置 ,详见 :http://aboutgitlabcom

sharyuke

gitcafe最近也进去了,好像改了一个版,还蛮好看的,进探索看了一下,推荐的项目都是2年之前的了,给我的感觉是以前有一阵子很火,然后沉默了,当然,如果单纯是代码存储还是可以的。

代码中国,有1000个私有仓库,但是中文用户名个人有点接受不了。

应该还有一个codingnet,冒泡里面各种灌水,进去了没有写代码的欲望了,我的感觉是不严谨,像一个娱乐社区。

上面三个,我还是愿意选择gitcafe,比较纯净一点。

最后:

Github,细节做得很好,可能有时候访问稍微慢一点,但是Q不是问题。进去之后看到别人的PR,issue很有想自己写代码的冲动。

通过以下的步骤,你将在服务器上搭建并使用你自己的Git服务,例如myhostexamplecom。其中的一些步骤,像email通知,限制用户的权限,特定分组的接入管理,都是依据你的要求和现实状况的可选项。还有很多命令,你需要root权限才能执行,所以别忘了用sudo,或者(最好不要)直接切换到root来执行。

为有读写权限的用户建立一个分组。根据你的操作系统,你可以用groupadd命令来实现,用vigr来编辑分组文件,或者直接编辑/etc/group文件。在最后,你会在/etc/group文件中看到如下一行

repogroup::10005:marry,john,violet

其中,repogroup是准许接入这个仓库的组的名字。10005是一个独一无二的分组识别数字,marry,john,violet则是获准接入这个仓库的用户。

决定Git仓库的路径。它既可以放在你的home路径下(eg

/home/yourname/gitroot),也可以放在一个专用的路径下(eg

/var/gitroot)

配置权限,让Git用户可以访问这个目录

chmod

g+rx

/path-to/gitroot

chown

:grouprepo

/path-to/gitroot

建立新的Git仓库,叫做newrepo

cd

/path-to/gitroot

git

init

--bare

newrepogit

建立路径认证,以允许用户组访问,同时有针对性的设置Git

cd

newrepogit

chown

-R

:grouprepo

git

config

coresharedRepository

group

find

-type

d

-print0

|

xargs

-0

chmod

2770

find

-type

f

-print0

|

xargs

-0

chmod

g=u

设置提交(commit)的email通知(commit是一条命令),这样当有新的修改提交到仓库的时候,开发者们将会收到一封关于修改内容一览的电子邮件。

echo

'One-line

project

description'

>description

git

config

--local

hooksmailinglist

email-a@examplecom,email-b@examplecom,

git

config

--local

hooksemailprefix

'[DI-PR]

'

git

config

--local

hooksshowrev

"git

show

-C

%s;

echo"

git

config

--local

hooksemailmaxlines

100

通过设置一个称为钩子(hook)的东东,来创建这些email通知。

cd

hooks

cp

post-receivesample

post-receive

chmod

+x

post-receive

从post-receive的脚本中移除掉最后一行注释的#字号,最后语句应该是这样的

/path-to-hooks/post-receive-email

在你的库中先放入一个文件(比如README)。为了避免其他用户在第一次提交时遇到奇怪的错误信息时感到困惑,这是有必要的。

cd

to-your-personal-working-directory

git

clone

myhostexamplecom:/path-to/gitroot/newrepogit

echo

"Short

project

description"

>READMEtxt

git

add

READMEtxt

git

commit

-a

-m

"Add

README

file"

git

push

origin

master

#

第一次仅仅需要T"origin

master"

这个参数

为仓库的其他用户建立账户。依据你系统的不同,你可以通过useradd

或者adduser来实现。

设置用户可以通过公/私钥配对来访问。这包括以下几步:

1)已经有公钥的用户,只需要把公钥发给你就好。

2)没有公钥的用户,必须用ssh-keygen命令来生成一个,然后把ssh/id_rsapub发给你就可以了。

3)之后你必须在他们对应的账户下面建立这种公/私钥配对。复制他的公钥,然后顺序执行下面的命令。

sudo

su

-

username

mkdir

-p

ssh

cat

>>ssh/authorized_keys

<<\EOF

paste-key-as-one-line

EOF

exit

改变用户的账户让他们使用受限的shell。如果你想让你添加进来的用户仅仅使用Git,而不是Unix的所有东西,那么就设置他们的账户,让他们只能使用Git。Git提供了这种专为这种需求设计的受限shell。它通常被安装在

/usr/libexec/git-core/git-shell

or

/usr/local/libexec/git-core/git-shell。因此,对所有你想限制权限的用户,你可以执行以下命令。

sudo

chsh

-s

/usr/libexec/git-core/git-shell

username

告诉你的用户,用下面的语句来克隆仓库到本地。

git

clone

myhostexamplecom:/path-to/gitroot/newrepogit

到了这里,恭喜你,你成功了!

码云和github的区别:码云的服务器在国内,在国内访问速度比github快很多,可以免费让自己的仓库他人不可见。访问速度很快,支持svn,git两种方式,免费账户同样可以建立私有项目,而github上要建立私有项目必须付费。

码云是OSCHINANET推出的代码托管平台,支持Git和SVN,提供免费的私有仓库托管。gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名gitHub。

Git 可以使用四种主要的协议来传输数据:本地传输,SSH 协议,Git 协议和 HTTP 协议。

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git的主要功能:

1 检查电子邮件或其他方式来检查提交状态的平均开发人员。

2 修补程序并解决冲突(您自己或要求开发人员稍后重新提交它,如果它是一个开源项目,请确定哪些修补程序可以工作,哪些不能)。

3将结果提交到公共服务器,然后通知所有开发人员。

扩展资料:

Git的优缺点:

优点:

1 适合分布式开发,强调个人。

2 公共服务器压力和数据量不是太大。

3快速和灵活。

4任何两个开发人员之间的冲突都可以很容易地解决。

5 离线工作。

缺点:

1 数据很少(至少是中文)。

2 学习周期相对较长。

3不符合传统思维。

4 可怜的代码的机密性。一旦开发人员克隆了整个库,所有代码和版本信息都可以完全公开。

GitLab是由Ruby语言开发的基于Linux的Git服务器,是我见过的最强大的Git服务器。发现它之后,立即决定将Git服务器换成GitLab。但安装好GitLab之后面临一个问题,如何将服务器上的git项目直接导入到GitLab,之前的Git服务器是由是git+apache搭建的(详见在Linux上用Apache搭建Git服务器)。在网上发现了这篇文档——ImportbarerepositoriesintoyourGitLabinstance,并按之进行了操作。1)设置存放代码库的主目录vi/etc/gitlab/gitlabrb比如这里设置为:git_data_dir"/gitlab/repos"2)访问刚搭建的GitLab站点,创建一个group,比如cnblogs。这时会在/gitlab/repos下创建/gitlab/repos/repositories/cnblogs文件夹。然后在/gitlab/repos/repositories/创建一个文件夹,比如cnblogs3)将现有的所有git项目文件复制到这个文件夹cp-r/data/git//gitlab/repos/repositories/cnblogs4)修改一下复制过来的文件夹的所有者:chown-Rgit:git/gitlab/repos/repositories/cnblogs5)运行GitLab导入命令cd/var/opt/gitlabgitlab-rakegitlab:import:repos等了一段时间之后,显示done,却一个项目也没导入进来。经研究发现,在导入时,GitLab只认文件夹名以git结尾的项目。于是,将要导入的项目文件夹名称加上git后缀,再次进行导入。结果显示导入成功,比如:Processingcnblogs/CNBlogsJobgitCreatedCNBlogsJob(cnblogs/CNBlogsJobgit)Done!可以是GitLab站点上却看不到已导入的项目。多次努力,也没能解决这个问题。后来,实在没法,改为手动导入,导入方法如下:1)在GitLab站点上创建与要导入的项目同名的项目。2)进入刚创建的项目文件夹cd/gitlab/repos/repositories/cnblogs/项目名称git3)删除该文件下的所有文件rm-rf4)将要导入的项目文件夹下的所有文件复制过来cp-r/data/git/CNBlogsJob//gitlab/repos/repositories/cnblogs/CNBlogsJobgit就这样将项目一个一个地导入进来。5)导入完成后,修改一下导入的所有项目的文件所有者chown-Rgit:git/gitlab/repos/repositories/cnblogs如果不修改所有者,客户端无法进行gitpush。就这样手动地完成了现有Git项目的导入。备注:操作系统是CentOS62,GitLab版本是784。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在服务器上搭建git服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情