搭建git服务器需要什么样的配置

搭建git服务器需要什么样的配置,第1张

搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。

假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步,安装git:

$ sudo apt-get install git

第二步,创建一个git用户,用来运行git服务:

$ sudo adduser git

第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsapub文件,把所有公钥导入到/home/git/ssh/authorized_keys文件里,一行一个。

第四步,初始化Git仓库

先选定一个目录作为Git仓库,假定是/srv/samplegit,在/srv目录下输入命令:

$ sudo git init --bare samplegit

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以git结尾。然后,把owner改为git:

$ sudo chown -R git:git samplegit

第五步,禁用shell登录:

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

第六步,克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/samplegit

Cloning into 'sample'

warning: You appear to have cloned an empty repository

剩下的推送就简单了。

管理公钥

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。

这里我们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。

管理权限

有很多不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。不过,因为Git支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。

当资源有限,但是项目同时需要几个人协同开发,我们就需要配置一个简单的局域网内的git服务器,方便协同开发。

首先我们新建远端的git目录,目录名和本地仓库名一致,并且在目录下运行:

git init --bare

一个空的git仓库就建立好了。然后我们需要把本地的仓库和远端的关联起来。具体做法是,在本地git仓库的目录下执行:

git remote add origin ssh://用户名@ip/仓库路径

比如:git remote add origin ssh://android@1921683172/home/android/projects/gitserver/demoproject/。完成后,本地的提交,就可以push到远端啦。比如:

git push origin master

就可以把本地的master推送到远端。协同开发的同事可以通过如下命令获取远端的仓库

git clone ssh://android@1921683172/home/android/projects/gitserver/demoproject/

是不是很简单呢

ps:实际使用过程中发现了一个问题,即本机的ip地址不是静态的。如何解决这个问题呢?可以在每次ip改变以后,重置仓库的origin url:

git remote set-url origin {url}

第一,下载并安装git

目前windows版本的git有几种实现,但我们选择msysgit发行版,这是目前做得兼容性最好

使用默认配置安装Git。这个不用多说,一路Next就可以,如果对各种选项不熟悉,建议使用默认配置,没问题的。

第二,创建github账号

什么是Git和GitHub

Git —The stupid content tracker, 傻瓜内容跟踪器,是一个由Linux内核开发者Linus为了更好地管理Linux内核开发而创立的分布式版本控制软件。

GitHub — 学生做版本控制最讨厌的就是找服务器,配置太麻烦了。GitHub这个网站为每个用户提供服务器托管其Git代码库,免费空间为300M。注册GitHub后你就会有03G的免费空间,不过只能创建公开项目。

为什么不选CVS或SVN

Git提交/克隆/pull/push的速度更快

Git的绝大多数操作都可以在本地完成,不需要频繁连接服务器。

注册GitHub账号

GitHub网址在 这里

点击上方导航条的Signup and Pricing即可进入注册界面, 选择注册免费账户

GitHub选择的默认通信方式是SSH,所以要先在Git里面生成SHH Key,打开Git Bash在其中输入如下命令:

ssh-keygen -t rsa -C "3sdfsf80@xinlangcom"

之后会让你选择是否对存放SSH Key的文件夹进行加密,一般都不需要的。一路回车,就OK了。

在c盘,当前用户文件夹下,有个ssh 文件夹,在里边 找到 id_rsapub文件,用记事本打开,复制其中的全部内容。

登陆你的GitHub账户,依次点击Account Settings

>

SSH Public Keys

>

Add another public key,把id_rsapub中的内容拷贝进去 。

至此,基本的设置已经完成了。

成了。

测试你的Git

经过上述配置,你的Gti应该可以通过SSH连接GitHub服务器了,让我们来测试下,输入如下命令:

会给你这样的提示:

输入yes,会显示:

到这里,说明你的SSH运转良好。

如果提示你的密钥不正确,那么你需要重新确认上一步的操作是否完整无误。

第三,建立本地git仓库

首先,git要求使用者必须提供自己的身份标识,为此我们需要在git bash中执行以下命令:

git config --global username 'aaTessst'

git config --global useremail fsc@sinacom

其次,选择git仓库目录

我们假设将git仓库目录放在D盘的OPENSource目录下,可以通过在git bash中执行以下命令完成:

cd /d

mkdir OPENSource

注:git bash支持大多linux bash终端命令,你可以自己尝试更多终端操作。

最后,建立项目并初始化git仓库

我们的第一个项目是一个使用Python语言将XML文件转换成Python字典,通过执行以下命令完成此步骤:

mkdir Python-XML2Dict

cd Python-XML2Dict

git init

执行此操作后,git将在Python-XML2Dict目录下创建一个隐藏目录(git),这个目录就是git用来管理软件版本的仓库。

第四,使用git管理项目

此步 和 在linux 上 使用 git 的 方法一样,具体参考 我的 其他 博文!

第五,将项目提交到github管理,gitpush

如果 第二步 测试无错,那么 经过 以下两步 就可以将本地的文件提交到github仓库了。

1、登录GitHub后,你可以在右上边靠中那里找到一个按钮“creat a New Repository”,点击过后,填入项目名称、说明等 过后就可以创建了,然后会出现一个提示页面,记下类似 git@githubcom:XXX/XXXgit 的地址,这个就是你这个项目的地址了。

2、

1 git remote add origin git@githubcom:XXX/XXXgit

2 git push -u origin master //把本地 master 分支 推送到 服务器的master分支上,如果服务器没有此分支,就 新建 此分支。这也是 在服务器上新建分支的一种方法

这个git@githubcom:XXX/XXXgit就是上面创建项目是生成的地址。现在打开你的项目网址,你就可以发现你的代码已经展示出来了。

第六,直接 用 git pull 将项目 从 github 上 同步 下来

有两种方法:

1、当git clone之后,直接git pull它会自动匹配一个正确的remote url

是因为在config文件中配置了以下内容:

1 [branch "master"]

2 remote = origin

3 merge = refs/heads/master

表明:

1git处于master这个branch下时,默认的remote就是origin;

2当在master这个brach下,使用指定remote和merge的git pull时,使用默认的remote和merge。

2、但是对于自己建的项目,并没有这块内容,需要自己配置。

1 git remote add -f origin login@gitsvgnuorg:/srv/git/projectgit //若是 执行过 第五步,那么 这一句 就 不用了

2 git config branchmasterremote origin //这一步 设置: 把 master 分支上 的 默认服务器地址 设为 origin指向的地址

3 git config branchmastermerge refs/heads/master //这一步 设置:如果当前分支是 master 分支,那么 git pull之后,直接 把 “从 origin 下载 下来的 code合并到 master分支上“

或者加上--global选项,对于全部项目都使用该配置。

建议:用第二种 方法,因为 如果 是 git clone的 项目,当 执行 git push 时,因为 在 git config里 url 是 只读方式

[remote "origin"]

fetch = +refs/heads/:refs/remotes/origin/

url = git://githubcom/xxx/xxxgit

//git@githubcom:XXX/XXXgit 这才是 读写方式

---------------------------------

如果提交了敏感信息,比如代码中设置的自己的密码什么的忘删除就上传上去了怎么办?

有两个方法:

1、重新修改本地代码,然后提交到服务器(覆盖),

2、直接登录 github 删除之前的项目。删除项目需要在GitHub网站上右上方找到admin按钮,进去后右边最下面有个删除的按钮,这样就可以删除了。

--------------------------

若是一个项目就托管在 GitHub 上。你可以把它的 URL 分享给每位对此项目感兴趣的人。本例的 URL 是http://githubcom/testinguser/iphone_project。而在项目页面的摘要部分,你会发现有两个 Git URL 地址,见 右图:

右图的 摘要中的公共 URL 和私有 URL

Public Clone URL 是一个公开的,只读的 Git URL,任何人都可以通过它克隆该项目。可以随意散播这个 URL,比如发布到个人网站之类的地方等等。

Your Clone URL 是一个基于 SSH 协议的可读可写 URL,只有使用与上传的 SSH 公钥对应的密钥来连接时,才能通过它进行读写操作。其他用户访问该项目页面时只能看到之前那个公共的 URL,看不到这个私有的 URL。

安装msysgit安装步骤此处略去。END安装CopSSH安装步骤此处略去。END修改配置修改CopSSH配置文件C:\ProgramFiles\ICW\etc\sshd_config,确保如下行为非注释行,且设置为“no”:END生成用户帐号在服务器上生成Windows用户,取消用户下次登录时须更改密码,设置密码永不过期:将该用户隶属于GitUser组(如尚未生成改组,则先生成改组):

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 搭建git服务器需要什么样的配置

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情