小型简易GIT服务器搭建和使用

时间:2024-07-13 15:57:05

搭建GIT服务器的文章有很多,多数在管理的时候都使用了gitosis作为管理工具,但是作为一个小团队(人数少于50人),我觉得完全可以使用公钥验证的方式,这样会简单不少,下面来看看简易的搭建方法吧。

服务器版本:ubuntu 16.04

我的搭建过程是参考指导文档 https://git-scm.com/book/zh/v2/

首先安装git和ssh等工具

sudo apt-get install git openssh-server openssh-client

初次运行git要做一些基本的信配置

 git config --global user.name "John Doe"
 git config --global user.email johndoe@example.com

这样服务器的软件就搞定了,下面我们来做一下配置

下面你可以新建用户,当然也可以不新建,然后在用户目录下新建.ssh文件,在.ssh中新建

authorized_keys的文件,这个文件主要用来保存其他用户的公钥

sudo adduser git
su git
cd
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

下面的操作是在其他客户端电脑上的操作,即生成秘钥执行ssh-keygen -t rsa会在你的家目录中.ssh/生成id_rsa.pub(公钥)和id_rsa(私钥),将公钥发送到服务器的/tmp目录下,最好重命名一下,防止覆盖了别人的. 如:id_rsa_1.pub

ssh-keygen -t rsa
scp ~/.ssh/id_rsa_1.pub git@gitserver:/tmp/
//下面的操作是服务器的端要做的了,将公钥内容放到authorized_keys中。
cat /tmp/id_rsa_1.pub >> ~/.ssh/authorized_keys  

这样就可以了,下面你要做的就是初始化仓库代码

mkdir git
cd git
mkdir project.git
cd  project.git
git init --bare

在初始化代码的时候要注意,如果你原来的代码使用repo或者git管理的请先将他们的索引删掉,不然你上传的代码十不全的,可以执行一代码。

find -name ".git" -o ".repo" -o ".gitignore"|xargs rm -rf 

git没法直接把代码包拖进来管理,所以初始化仓库后你要做的是初始化代码

on John's computer

cd myproject

git init

git add .

git commit -m 'initial commit'

git remote add origin git@gitserver:/path to/git/project.git

git push origin master

下面你就可以在客户端操作了,获取代码并修改提交

一般第一次使用我们会执行

mkdir project

cd  project

git init

git clone git@192.168.1.158:/home/project/solox_android.git    //这里git使我们的git管理员,192.168.1.158使我们git服务器地址,solox_android.git是我们的项目名,这样我们就拿到代码了
git checkout -b branch_name     //因为我们不想在开发新功能的时候,把我们不成熟的代码直接放到master分支中,所以暂时在新分支中开发。删除分支的命令式(git checkout -d branch_name)

修改代码并提交到服务器中

git pull            //一般在开发之前我们要将代码更新到最新版本

git status     //查看一下我们提交的文本的状态,主要看看有哪些我们修改的文件

git diff filename //看看我们修改的文件内容,防止误提交

git add   //把它们添加到缓存区

git commit -m "代码提交信息"  //改动已经提交到了 HEAD,但是还没到你的远端仓库,并且这里加上了你的提交log

git push origin master //提交到远端仓库,可以把 master 换成你想要推送的任何分支
如果你误删除了本地的某个文件,可以使用

git checkout --    //从服务器单独拿文件
查看提交记录

git log -p -2// -P是显示提交的内容差异   -2表示先最近的2次

git log -p -2 filename //查看这个文件最近两次的修改记录
查看差异

git  diff   filename