git(学习之四)git协议服务器搭建

#######################################################################################################

qq:1218761836

qq群:150181442

E-mail:[email protected]

#######################################################################################################

目录

Git 服务器的搭建... 1

1.1 Git协议的服务器搭建... 1

1.1.1 安装git. 1

1.2.1 创建目录及版本库... 1

1.2.3 Git 服务器启动... 2

1.2.4 客户端测试... 4

Git 服务器的搭建

远程仓库通常只是一个纯仓库(bare repository)—一个没有当前工作目录的仓库。因为该仓库只是一个合作媒介,所以不需要从一个处于已从硬盘上检出状态的快照;仓库里仅仅是git的数据。更简单的说,纯仓库是你的项目里的.git内容。

开始架设git服务器的时候,需要把一个现存的仓库导出为新的纯仓库—不包含当前工作目录的仓库。方法很简单。把一个仓库克隆为纯仓库,可以使用clone命令的--bare选项。纯仓库的目录名以.git 结尾。

Git服务器搭建根据自己的需求选择不同的协议

Git支持http:// git:// ssh:// https:// file:// (本地)

ssh://[[email protected]]host.xz[:port]/path/to/repo.git/

git://host.xz[:port]/path/to/repo.git/

http[s]://host.xz[:port]/path/to/repo.git/

ftp[s]://host.xz[:port]/path/to/repo.git/

rsync://host.xz/path/to/repo.git/

1.1 Git协议的服务器搭建

1.1.1 安装git

安装git软件,使用yum安装的方式

yum install git-* -y 安装git所有的包

git-all

git-cvs

git-daemon

git-email

git-gui

git-svn

因为要搭建git协议的服务器,所以git-daemon是必须要安装的,git-daemon支持两种启动方式,一种是git-daemon 的直接启动方式,一种是利用centos下的xinetd来加载git进程。

1.2.1 创建目录及版本库

[[email protected] ~]# mkdir /project/git/ -p

[[email protected] git]# git init # 创建一个git版本库

Initialized empty Git repository in /project/git/.git/

[[email protected] project]# git clone –bare /project/git/.git/ my-project.git

Initialized empty Git repository in /project/my-project.git/

warning: You appear to have cloned an empty repository.

[[email protected] /]# tree /project/my-project.git/

/project/my-project.git/

├── branches

├── config

├── description

├── HEAD

├── hooks

│   ├── applypatch-msg.sample

│   ├── commit-msg.sample

│   ├── post-commit.sample

│   ├── post-receive.sample

│   ├── post-update.sample

│   ├── pre-applypatch.sample

│   ├── pre-commit.sample

│   ├── prepare-commit-msg.sample

│   ├── pre-rebase.sample

│   └── update.sample

├── info

│   └── exclude

├── objects

│   ├── info

│   └── pack

└── refs

├── heads

└── tags

9 directories, 14 files

可以看到这些文件其实和svn的配置文件差不多。

1.2.3 Git 服务器启动

根据官网提示我使用git daemon --reuseaddr --base-path=/project/ /project/ 运行结果失败了,其实git守护进程结合系统运行模式有三种,一种是守护进行运行,后两种是xinetd,sysinit

我选择了centos 结合xined,所以在centos下可以结合xinetd来加载git服务,其实在安装git-daemon的时候也会安装上xined这个包。

Git守护进程的端口是9418

[[email protected] /]# grep 9418 /etc/services

git 9418/tcp # git pack transfer service

git 9418/udp # git pack transfer service

来看看默认xined加载的git服务的配置文件,具体可以去man xined 去了解一下xined

[[email protected] /]# cat /etc/xinetd.d/git

# default: off

# description: The git d?mon allows git repositories to be exported using \

# the git:// protocol.

service git

{

disable = yes

socket_type = stream

wait = no

user = nobody

server = /usr/libexec/git-core/git-daemon

server_args = --base-path=/var/lib/git --export-all --user-path=public_git --syslog --inetd --verbose

log_on_failure += USERID

}

修完的配置文件

[[email protected] /]# vim /etc/xinetd.d/git

# default: off

# description: The git d?mon allows git repositories to be exported using \

# the git:// protocol.

service git

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/libexec/git-core/git-daemon

server_args = --base-path=/project/my-project.git --export-all --user-path=root --syslog --inetd --verbose

log_on_failure += USERID

}

~

[[email protected] /]# /etc/init.d/xinetd restart

Stopping xinetd: [FAILED]

Starting xinetd: [ OK ]

[[email protected] /]# netstat -anlt|grep 9418

tcp 0 0 :::9418 :::* LISTEN

1.2.4 客户端测试

可以看到xined 结合git走的是tcp协议

客户端测试,客户端测试的时候只需要安装git就行

[[email protected] /]# git clone git://20.0.0.89/my-project.git sadoc

Initialized empty Git repository in /sadoc/.git/

warning: You appear to have cloned an empty repository.

将服务器的my-project.git 克隆到本地的sadoc, 不过在客户端测试的时候我发现,git clone 在那个目录下你克隆的服务器版本库就会是你当前执行git clone的目录

在服务器端提交一些文件,在客户端进行下载一下

[[email protected] /]# cd sadoc/

[[email protected] sadoc]# git remote -v

origin git://20.0.0.89/my-project.git (fetch)

origin git://20.0.0.89/my-project.git (push)

[[email protected] sadoc]# git remote

origin

[[email protected] sadoc]# ls -a

. .. .git

[[email protected] sadoc]# git remote -v

origin git://20.0.0.89/my-project.git (fetch)

origin git://20.0.0.89/my-project.git (push)

[[email protected] sadoc]# touch aa

[[email protected] sadoc]# git add aa

[[email protected] sadoc]# git status

# On branch master

#

# Initial commit

#

# Changes to be committed:

# (use "git rm --cached <file>..." to unstage)

#

# new file: aa

#

[[email protected] sadoc]# git commit -m "aa" #提交的时候提示我需要配置用户名和邮箱

[master (root-commit) 90291de] aa

Committer: root <[email protected]>

Your name and email address were configured automatically based

on your username and hostname. Please check that they are accurate.

You can suppress this message by setting them explicitly:

git config --global user.name "Your Name"

git config --global user.email [email protected]

If the identity used for this commit is wrong, you can fix it with:

git commit --amend --author=‘Your Name <[email protected]>‘

0 files changed, 0 insertions(+), 0 deletions(-)

create mode 100644 aa

参考资料:http://www.git-scm.com/book/en/v2

时间: 2024-10-11 15:23:28

git(学习之四)git协议服务器搭建的相关文章

Git学习 -- 自定义Git

忽略特殊文件 在工作区创建.gitignore文件,编写内容 # Windows: Thumbs.db ehthumbs.db Desktop.ini # Python: 忽略Python编译产生的.pyc..pyo.dist等文件或目录 *.py[cod] *.so *.egg *.egg-info dist build # My configurations: db.ini deploy_key_rsa 然后add和commit该文件 此后当工作区出现.gitignore中类型文件时,git

git学习——&lt;五&gt;git分支

git学习——<一>git安装 git学习——<二>git配置文件 git学习——<三>git操作 git学习——<四>git版本管理 一.提出问题 今天开发的过程中遇到一个问题,A组接到开发任务要修改file文件,B组在此之前的15天为了完成自己的开发任务对file文件进行了修改,为了同步代码,B组将自己未完成的模块file文件提交到了cvs上.A对此一无所知,A组在完成开发任务后,把file文件完全上到了现网环境,报错了. 当然,避免上述问题的途径很多,

Git学习总结(5)——搭建Git简易高效服务器

1. mysysgit+gitblit安装流程 1.1资源 需先下载好的资源(公司用的1.6,1.7+请自行匹配对应的mysysgit+gitblit): jdk1.6 Git-1.8.4-preview20130916.exe gitblit-1.2.1.rar 1.2安装 1.2.1 Git Bash安装 1)双击弹出安装页面 2)点击2次next,进入路径选择,添加自定义的路径即可: 3)点击next,进入 选择组件, 4)点击2次next 进,选择运行环境,选择 "run Git fro

Git 学习之Git 基础(二)

Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置:开始或停止跟踪某些文件:暂存或提交某些更新.我们还会展示如何让 Git 忽略某些文件,或是名称符合特定模式的文件:如何既快且容易地撤消犯下的小错误:如何浏览项目的更新历史,查看某两次更新之间的差异:以及如何从远程仓库拉数据下来或者推数据上去. 取得项目的 Git 仓库 有两种取得 Git 项目仓库的

git 学习(git fetch/ git pull/ git rebase/ git cherry-pick的区别)

使用git做开发管理: 1. Git clone  将远程代码克隆到本地: 2. Git branch  查看本地branch (git clone 时会创建 master) 3. git branch -a  查看本地和远程分支:(远程分支包括 remotes/origin/master 远程master分支) 4. Git remote -v 查看远程库对应的简短名称 (origin  ...) 5. Git checkout -b bug origin/master 创建本地开发分支 6.

Git学习笔记——Git安装

Git是目前世界上最先进的分布式版本控制系统(没有之一). 在Linux上安装Git 首先,你可以试着输入git,看看系统有没有安装Git: $ git The program 'git' is currently not installed. You can install it by typing: sudo apt-get install git 像上面的命令,有很多Linux会友好地告诉你Git没有安装,还会告诉你如何安装Git. 如果你碰巧用Debian或Ubuntu Linux,通过

git学习——&lt;三&gt;git操作

一.创建仓库 创建一个目录 mkdir repository cd到该目录下,初始化该版本库 git init 至此,版本库创建成功,可以在该文件夹下看到.git文件夹,ls -ah可以看到该文件夹. 二.版本管理 1.将文件或文件夹添加到版本库中进行版本控制 在工作区创建一个文件 touch readme.txt 将该文件添加到暂存区 git add readme.txt 将文件从暂存区提交到版本库 git commit -m "some comment" *工作区.暂存区.版本库

Git学习系列-Git基本概念

本系列基于Pro Git介绍如何使用Git进行源代码管理,以及后期如何使用Git进行项目管理. 系列初步目录如下: 1. Git基本概念 2. Git分支操作 后续待定. Git的历史就不在这里进行介绍了,网上随处都可以找到,以下是在使用Git的时候的一些基本概念和方法 Git有三种状态,文件可能处于其中之一:已提交(Committed).已修改(modified)和已暂存(staged).已提交表示数据已经安全的保存在本地数据库中.已修改表示已经修改了文件,但还没有保存在数据库中.已暂存表示对

git学习(二)——git的文件状态

git的文件状态 用于查看git的状态 git status 用于git文件的删除操作 git rm 如果只是 git rm --cache 仅删除暂存区里的文件: 如果不加--cache 会删除工作区里的文件 并提交到暂存区 文件检出 git checkout 直接加文件名 从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖; 加了[分支名] +文件名 则表示从分支名为所写的分支名中拉取文件,并覆盖工作区里的文件; 文件状态 新建文件--->Untracked 使用add命令将新