Ubuntu git服务器搭建指南

         Ubuntu git服务器搭建指南



引言

  关于Android相关的源码分析博客,停更有蛮久的了。因为一直忙于新的工作和新知识点的学习当中!当然药不能停,错了博客不能停!正好在最近的工作中,需要自己从头开始搭建自己的git服务器供团队使用(不要问我,为啥这个技能一直没有学会,因为以前有专门的小组或者说人员来干这个事情,现在是一穷二白必须自己亲自下场干!)。通过本篇博客,我们将学会如何搭建自己的Git服务器(可以作为共有,或者私有仓库使用,这个就看自己的需求了).

那么搭建我们的git服务器,需要搭配那些原材料呢。首先必须要有一台本地服务器和远程服务器,通常我们的做法是在远程服务器上搭建git仓库,然后本地服务器远程访问git仓库获取,提交相关代码!好了,来不及了,不多说了直接开干!




一.具体搭建指南

  由于本篇博客是具体操作类型的,所以没有过多文字描述或者铺垫的,天空飘来两个字,直接开干就好了!

1.1 安装git工具

  既然是由使用Git,当然首先必须要在两边的机器上安装 git。安装方法如下:

xxx@xxx:~$ sudo apt-get install git-core
Reading package lists... Done
Building dependency tree       
Reading state information... Done
git-core is already the newest version (1:2.7.4-0ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 48 not upgraded.

这里朋友们,看不到我安装的流程了,因为我已经提前安装过了!


1.2 创建git用户/组

  接下来我们 创建一个git用户组和用户,用来运行git服务:

xxx@xxx:~$ sudo groupadd git
xxx@xxx:~$ sudo  useradd git -g git -m  
xxx@xxx:~$ sudo passwd git

注意这里在创建git用户的使用,最好使用-m参数,否则不会在/home下创建对应的用户目录。


1.3 生成ssh本地秘钥

  为了更加容易的访问服务器,我们非常有必要设置一个免密 ssh 登录。首先我们必须要本地的服务器电脑上生成ssh的秘钥,生成方法如下:

xxx@xxx:~$ ssh-keygen -C xxxx@xxx.com

这个时候会要求你输入相关的信息,如无特别需求,我们直接按Enter回车即可。最终会在本地服务器当前用户的根目录.ssh下生成一对公钥对,如下:

xxx@xxx:~/.ssh$ ls
id_rsa  id_rsa.pub  
xxx@xxx:~/.ssh$ 

然后收集我们前面生成的公钥信息,公钥位于id_rsa.pub文件中,把我们的公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

这里注意,当有多个用户需要需要的时候,我们也可以参照上述办法生成公私钥对,然后添加到上述文件中。

这里需要注意的一点是,如果服务器端没有该文件authorized_keys创建它,步骤如下:

xxx@xxx: cd /home/git/
xxx@xxx: mkdir .ssh
xxx@xxx: chmod 755 .ssh
xxx@xxx: touch .ssh/authorized_keys
xxx@xxx: chmod 644 .ssh/authorized_keys

也许读者朋友们在实际操作的过程中会惊讶的发现,在经过上述配置git服务器后,我们客户端的密钥已经在服务端~/.ssh/authorized_keys中添加,但git在clone、push等操作时依然需要输入登录密码(即我们自己当前用户的密码)。 此时我们真的是只能放弃了,肯定不是。具体的解决步骤如下:

  • 服务器端

    • 打开ssh配置文件:
    	xxx@xxx: vim /etc/ssh/ssh_config
    
    • 修改如下的配置:

      Host *
      RSAAuthentication yes
      PubkeyAuthentication yes
      GSSAPIAuthentication yes
      

      其中,RSAAuthentication yes 与 PubkeyAuthentication yes 是本文件的新增内容。

  • 客户端(本地端)

    • 配置客户端免密登录
    xxx@xxx: ssh-add ~/.ssh/id_rsa
    

经过上述的几个步骤相关配置之后,就可以免密登录了。


1.4 创建git远程仓库

  首先我们使用ssh登录远程服务器,然为登录进服务器并为git 创建一个项目路径(这里的路径可以使git的用户目录,也可以为你的仓库设置一个你想要的目录,这个看读者的个人意愿而定)。

	xxx@xxx: cd /home/git
	xxx@xxx: mkdir gitrepo
	xxx@xxx: chown git:git gitrepo/
	xxx@xxx: cd gitrepo

接着创建一个git空仓库,如下:

xxx@xxx: cd ..
xxx@xxx: git init --bare remote.git
已初始化空的 Git 仓库于 /home/git/remote.git/

以上命令为git创建一个空仓库,服务器上的Git仓库通常都以.git结尾。然后,把仓库所属用户改为git:


1.5 git远程仓库关联具体仓库目录

  通过前面的步骤我们创建了一个空的远程仓库,此时我们可以通过git clone命令clone一个空的仓库,如下:

xxx@xxx:~$ git clone git@10.31.72.5:/home/git/remote.git
Cloning into 'remote'...
warning: You appear to have cloned an empty repository.

此时我们的远端服务器的IP地址为10.31.72.5

通过上述我们可以看到,我们确实clone了一个没有任何具体仓库目录的空仓库,那么我们如何关联具体的仓库目录呢,具体操作步骤如下:

  • 进入我们远程服务器创建仓库的目录:

    xxx@xxx: cd gitrepo/
    
  • 现在在该目录中创建项目所需的文件,并在该目录下启动git(也就是我们常说的git init)

    xxx@xxx:~/gitrepo$ git init 
    已初始化空的 Git 仓库于 /home/git/gitrepo/.git/
    
  • 创建一个测试文件hello,并add进仓库,如下

	xxx@xxx:~/gitrepo$ rm hello 
	xxx@xxx:~/gitrepo$ 
	git@dell-PowerEdge-R740xd:~/gitrepo$ 
	xxx@xxx:~/gitrepo$ touch hello
	xxx@xxx:~/gitrepo$ ls 
	hello
	xxx@xxx:~/gitrepo$ git add hello 
	xxx@xxx:~/gitrepo$ 
	xxx@xxx:~/gitrepo$ git commit -m "first commit"
	[master (根提交) c83c697] first commit
	 1 file changed, 0 insertions(+), 0 deletions(-)
	 create mode 100644 hello
	xxx@xxx:~/gitrepo$ git log
	commit c83c697d1908688d5e3b733d184e6b7a5a9dfbad (HEAD -> master)
	Author: xxx <xxx>
	Date:   Mon Nov 22 11:27:57 2021 +0800
	
	    first commit
	xxx@xxx:~/gitrepo$ 

  • 将当前git目录关联具体的git远程仓库

    到现在为止,我们的git目录一直在服务器的本地环境。现在我们必须将这些更改推送到具体的git仓库上面,以便客户端通过互联网访问,并且可以与其他团队成员进行协作。这里的具体操作如下:

    xxx@xxx:git remote add origin git@10.31.72.5:/home/git/remote.git
    xxx@xxx:~/gitrepo$ ls
    aosp  hello
    git@dell-PowerEdge-R740xd:~/gitrepo$ git  push origin master 
    
    
    

经过如上,我们的git仓库就关联了具体的git文件目录了。

这里有一点需要注意的是git remote add origin,这个操作也可以在客户端进行操作,这里我只是为了演示更加的直观和通用的做法。


1.6 本地端git clone远程仓库

  经过上述一顿猛如虎一样的骚操作,现在,我们就可以使用clone, pull 或 push 选项在服务器和本地计算机之间推送或拉取等相关的操作了。如下所示:

xxx@xxx:~$ git clone git@10.31.72.5:/home/git/remote.git
Cloning into 'remote'...
remote: 枚举对象中: 3, 完成.
remote: 对象计数中: 100% (3/3), 完成.
remote: 总共 3 (差异 0),复用 0 (差异 0)
Receiving objects: 100% (3/3), done.
xxx@xxx:~$ cd remote/
xxx@xxx:~/remote$ git pull origin master 
From 10.31.72.5:/home/git/remote
 * branch            master     -> FETCH_HEAD
Already up to date.
xxx@xxx:~/remote$ git push origin master 
Everything up-to-date



写在最后

  好了今天的博客Ubuntu git服务器搭建指南就到这里了。总之,青山不改绿水长流先到这里了。如果本博客对你有所帮助,麻烦关注或者点个赞,如果觉得很烂也可以踩一脚!谢谢各位了!!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值