`
aoingl
  • 浏览: 86542 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux 下一步步安装 Git Server

阅读更多

    版 本控制系统经历 CVS , SVN, 现在到了 Git 的世界。 Git 与 CVS, SVN 相比有很多的优势,其中最为人津津乐道的就是 branch 的切换都是在本地执行,速度非常之快,非常利于分布式开发进程。现在也是开源世界了最流行的版本控制系统。比如:Fedora 社区(http://git.fedorahosted.org/git), JBoss AS 7 的 source(https://github.com/jbossas/jboss-as) 等。

 

      GitHub 提供免费的 Git server, 但是它仅仅针对 Public 的 repository 是免费的,如果你想有你个人的 Git repsotories, 就需要交费了。 但是, 依照国人一向不信他人,只信自己的美德, 应该很少有人把机密的代码交由外人掌管吧,万一 GitHub 被黑了, 那岂不是一起遭殃? 怎么办呢, 自己建立个 Server 不就完了吗。

 

第一步: 安装 Git

 

NOTE:
接下来的操作都是在 Server 机器上运行

 

      Fedora 下运行:

yum install git-core

 

      Ubuntu 下运行:

apt-get install git-core

 

 

第二步: 初始化一个 repository

 

[lgao@lgao myclone]$ cd /home/lgao/sources/my_own/repositories/
[lgao@lgao repositories]$ git init --bare myprj
Initialized empty Git repository in /home/lgao/sources/my_own/repositories/myprj/.git/

 

    指定 --bare,当前 repository 下就只有 .git/ 下的 objects,而没有真实文件。一般在 Server 端。

 

第三步: 初始化提交

 

    当一个 repository 初始化后, 里面什么也没有。我们需要建立个 master branch,才能被正常 clone 到其他地方。

[lgao@lgao myclient]$ mkdir initial.commit
[lgao@lgao myclient]$ cd initial.commit/
[lgao@lgao initial.commit]$ git init
Initialized empty Git repository in /home/lgao/sources/my_own/myclient/initial.commit/.git/
[lgao@lgao initial.commit]$ git remote add origin /home/lgao/sources/my_own/repositories/myprj/
[lgao@lgao initial.commit]$ touch Readme
[lgao@lgao initial.commit]$ git add Readme
[lgao@lgao initial.commit]$ git commit -m "initial commit"
[master (root-commit) 032dad8] initial commit
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 Readme
[lgao@lgao initial.commit]$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 206 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /home/lgao/sources/my_own/repositories/myprj/
 * [new branch]      master -> master

 第四步  正常使用

 

      经过初始化提交过程,相当于激活了该 repository, 我们可以正常使用了。

[lgao@lgao myclient]$ git clone /home/lgao/sources/my_own/repositories/myprj/ 
Cloning into 'myprj'...
done.
[lgao@lgao myclient]$ cd myprj
[lgao@lgao myprj]$ l
total 0
-rw-rw-r-- 1 lgao lgao 0 Jan 21 15:15 Readme
[lgao@lgao myprj]$ vim Readme 
[lgao@lgao myprj]$ git commit -m "modify readme" Readme
[master 1bf69b4] modify readme
 1 files changed, 1 insertions(+), 0 deletions(-)
[lgao@lgao myprj]$ git push
Counting objects: 5, done.
Writing objects: 100% (3/3), 247 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /home/lgao/sources/my_own/repositories/myprj/
   032dad8..1bf69b4  master -> master
 

 

 第五步   与他人共享 Repository

 

       按照上面的步骤,我们已经可以使用 Git 了。 但是 Git repository 的 URL 都是本地目录, 怎么能方便的让合作伙伴方便的访问该 Repository 呢? 这就要介绍下 Git 支持的 4 中传输协议了: Local, SSH, Git, HTTP。 我们一个个的介绍:

Local

  Local 就是指本地文件系统,可以是本机器文件,也可以是通过 NFS 加载的网络映射。这种情形下与人共享就是把你的 repository 所在的目录作为 NFS 共享出去,让能访问到你机器的人像本地文件一样操作。具体怎么 NFS 共享超出本文范围,不加讨论(有兴趣的请参考: http://docs.fedoraproject.org/en-US/Fedora/14/html/Storage_Administration_Guide/ch-nfs.html )。不过不推荐这种方式共享, 因为效率太低。

SSH

   SSH 协议大家都很熟悉,只要你的 Server 能 ssh 登录就可以。假设你的 Server 可以远程 ssh 登录,我们看如何从 Server clone 出 Git Repository:

[lgao@lgao myclient]$ git clone lgao@10.66.14.143:git_repos/myprj from_remote
Cloning into 'from_remote'...
lgao@10.66.14.143's password: 
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
  也就是说只要你在 Server 端给一个用户创建完帐号后, 他就可以 clone 代码了。 具体的权限设置和 Linux 下权限配置是一样的。 一般跟一组 repositories 指定一个新的 group, 把新建的用户加入到该 group 后就可以有相应的读写权限了。
   还有另外一种方式,是通过提交公钥到 Server 端来获得访问和提交权限,而不需要创建用户。 具体细节本文不加讨论。
Git

   该协议一般只是只读权限。

 

   第一步需要安装 git-daemon:

[root@lgao ~]# yum install git-daemon

 

   接着启动 git-daemon:

[lgao@lgao initial.commit]$ git daemon --base-path=/home/lgao/sources/my_own/repositories --export-all

 

    在你的工程下创建 git-daemon-export-ok 文件:

[lgao@lgao repositories]$ cd myprj
[lgao@lgao myprj]$ touch git-daemon-export-ok

 

     现在就可以通过 Git 协议 clone repository 了:

[lgao@lgao test]$ git clone git://lgao.nay.redhat.com/myprj
Cloning into 'myprj'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
HTTP

   该协议一般只是只读权限。GitWeb 包提供 CGI , 它可以被部署到任何支持静态 web 服务的服务器中去。我们还以最常见的 Apache 为例:

 

    版本信息:

Httpd:Apache/2.2.21 (Fedora) 
Git:  git version 1.7.7.5
GitWeb:1.7.7.5-1.fc16
 

    安装 Httpd 和 gitweb:

[lgao@lgao initial.commit]$ sudo yum install httpd gitweb
 

    修改 /etc/gitweb.conf:

[lgao@lgao repositories]$ vim /etc/gitweb.conf
修改:
our $projectroot = "/home/lgao/sources/my_own/repositories"; 

 

    在 httpd 的 DocumentRoot 所在目录创建 Link 文件:

[root@lgao DCIM]# cd /var/www/html
[root@lgao html]# ln -s /home/lgao/sources/my_own/repositories/ git
[root@lgao html]# chown -R lgao.lgao git
 

    修改 httpd.conf 中的 user 和 group:

User lgao
Group lgao

 

   重启 httpd:

[root@lgao httpd]# service httpd restart
Restarting httpd (via systemctl):                          [  OK  ]

 

    OK 了, 现在就可以访问了:

 

    你可以修改 Server 机器下 <Your Repo>/description ,这样可以显示在 git web 页面上。

 

    修改 <Your Repo>/config , 加上 owner 和 url:

 

 

[gitweb]
        owner = Your Name <name@example.com>
        url = git://lgao.nay.redhat.com/myprj
 

 

之后,我们再看看截图:

 

 

 

 

  • 大小: 30.4 KB
  • 大小: 34.3 KB
分享到:
评论
5 楼 andylo_seiya 2015-02-06  
http 访问如何配置可写?
4 楼 webooxx 2014-04-29  
forenroll 写道
forenroll 写道
你好,我按照你的步骤来的,在浏览器里看不到我的项目,是什么情况?

报的错误是:
404 - No projects found

有可能没开 DIR 遍历目录.
3 楼 forenroll 2013-10-22  
forenroll 写道
你好,我按照你的步骤来的,在浏览器里看不到我的项目,是什么情况?

报的错误是:
404 - No projects found
2 楼 forenroll 2013-10-22  
你好,我按照你的步骤来的,在浏览器里看不到我的项目,是什么情况?
1 楼 zhouyaguo 2013-04-23  
写的挺好,简单明了 ;)

相关推荐

    35、Git详解.pdf

    安装过程中,用户只需按照提示一步步点击“下一步”即可完成安装。安装成功后,系统开始菜单中会出现Git项,包含了三个程序:Git Bash、Git CMD和Git GUI,其中Git Bash是Unix与Linux风格的命令行工具,使用最为广泛...

    从零开始配置树莓派3远程Python开发环境

    下面我们将详细探讨如何一步步实现这个目标。 首先,你需要确保你的树莓派已经安装了最新版本的Raspbian操作系统。Raspbian是为树莓派定制的基于Debian的Linux发行版,包含了Python和其他许多开发工具。你可以从...

    windows10 Redis

    双击该文件,会启动Windows的安装向导,按照提示一步步进行即可。安装过程中,可以选择安装路径、服务启动类型(自动或手动)、端口设置等。安装完成后,Redis服务会自动启动,我们可以通过命令行工具如`redis-cli`...

    Java开发环境的搭建

    本文将详细介绍如何一步步构建这样的环境。 首先,我们从JDK(Java Development Kit)开始。JDK是Java开发的核心组件,包含了Java运行时环境(JRE)以及用于编译和调试的工具。以下是如何下载、安装和配置JDK的步骤...

    Postman-win64-6.2.3-Setup.exe

    安装"Postman-win64-6.2.3-Setup.exe"时,用户通常会按照向导提示一步步进行,包括接受许可协议、选择安装路径、以及决定是否创建桌面快捷方式等。安装完成后,Postman会在开始菜单或桌面生成启动图标,用户点击即可...

    vscode教程.doc

    - 运行下载好的安装程序,按照提示一步步完成安装。 - 安装过程中可以选择自定义安装选项,例如添加全局npm缓存目录等。 3. **验证安装**: - 打开命令行工具(在Windows上是CMD,Mac和Linux上则是Terminal)。 ...

    Jenkins基础入门-10-新建一个执行java程序的Jenkins Job.rar

    本教程将引导你一步步创建一个新的Jenkins Job,用于执行Java程序。 ### 一、安装与配置Jenkins 首先,你需要在服务器上安装Jenkins。你可以从Jenkins官方网站下载最新版本的war包,然后在服务器的Tomcat或Jetty等...

    android源码开发实战21.07.zip

    在这个21.07的实战教程中,可能会通过实际案例带领开发者一步步实践上述知识点,包括但不限于修改系统行为、添加新功能、优化性能等方面。通过这样的学习,开发者不仅能够增强对Android系统的掌控力,还能提升解决...

    web-dev_1.0_setup-workspace

    在实际操作中,开发者可能需要根据这个文件来一步步设置他们的开发环境。 总之,一个完善的Web开发工作空间应该具备良好的组织结构,高效的开发工具,以及适应项目需求的配置。通过学习和实践上述知识点,开发者...

    计算机专业应届毕业生个人简历模板

    4. **专业技能**:列出掌握的编程语言(如Java、Python、C++等)、操作系统(Windows、Linux、macOS)、数据库(MySQL、Oracle、SQL Server)、框架(Spring、React、Vue等)以及其他专业工具,如Git、Docker、...

Global site tag (gtag.js) - Google Analytics