zoukankan      html  css  js  c++  java
  • Linux服务器配置git服务

    前言

    Git是一个非常著名的分布式版本控制系统,而广大开发者更是习惯在最大的远程仓库GitHub上提交自己的代码。但是有时候,一些小项目不值得放到GitHub上去,或是由于隐私问题不好在GitHub的公共仓库上提交,自己也不愿意出钱购买私有仓库。在这种情况下,如何在一台自己的Linux服务器上搭建Git服务,并且和客户端(特别是Windows客户端)完美协同工作呢?

    系统配置

    服务器:Ubuntu 16.04
    客户端:Windows主机(Windows 7以上)

    安装Git和SSH

    在服务器上运行apt安装git和openssh-server即可,非常方便。

    $ sudo apt install git openssh-server
    

    客户端由于是windows,没有原生ssh,因此需要下载git for windows和putty。安装过程略。

    生成密钥对

    安装完成之后,在客户端的命令行中运行如下命令生成SSH密钥对:

    C:> ssh-keygen -t rsa
    

    按照提示操作即可,为了简便起见不用设置ssh密钥的密码。
    执行上述命令之后可以在C:Users用户名.ssh目录下找到id_rsa.pri和id_rsa.pub两个文件。分别是你的私钥和公钥。

    在服务器上同样运行这个命令,则可以在/home/用户名/.ssh中也找到这两个文件,但是我们并不关心服务器上这两个文件的内容,除非服务器需要ssh连接客户端。

    将客户端公钥复制到服务器

    在服务器上新建authorized_keys文件。

    $ cd .ssh
    $ touch authorized_keys
    

    然后将客户端公钥文件id_rsa.pub文件的内容复制到authorized_keys文件中去。如果有多个客户端,则需要将每个客户端的公钥都复制到authorized_keys中,一行一个。

    对于windows客户端,可以通过putty自带的pscp命令将id_rsa.pub文件复制到服务器,再ssh进入服务器操作(当然如果有服务器的直接操作权限那就更好啦)

    新建git仓库

    在服务器上新建你要作为git仓库的文件夹,例如:

    $ mkdir myrepo
    

    这里的myrepo应当根据实际要求替换成你自己的仓库名。
    然后执行下列命令:

    $ cd myrepo
    $ git --bare init myrepo.git
    

    这样就建立好了自己的仓库。

    修改SSHD配置

    网上很多教程到上面一步就结束了,但是它们都漏了很重要的一步。就是修改sshd的配置。

    $ sudo vim /etc/ssh/sshd_config
    

    确保以下几处配置:

    StrictModes no  #由yes改为no
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile %h/.ssh/authorized_keys #这里要取消注释
    

    这样做的目的是使以后你推送到远程仓库时不需要再输入密码。

    客户端配置

    克隆远程仓库

    使用git clone命令克隆远程仓库:

    > git clone username@host:/myrepo/myrepo.git
    

    即可完成远程仓库的克隆。这里的username应替换成你远程仓库主机的用户名,host一般是远程仓库的IP地址,或者你可以将远程计算机名添加入客户端的host文件。

    工作并推送到远程仓库

    完成工作并提交更改以后,可以使用git push命令将你的修改推送到远程仓库。

    > git push origin master
    

    这里的master也可以是其他分支,涉及到git的详细操作教程,本文这里不展开。

    修改远程仓库地址的方法

    有的时候远程仓库地址并不是一个静态IP地址,可能会随着DHCP协议重新分配,那么当远程仓库的IP地址发生了变化后怎么在客户端修改远程仓库的地址呢?只要进入你克隆的目录下,找到.git/config文件,将其中的远程仓库地址修改为新的地址即可。

    服务器上仓库的重建

    非常简单,只要你在别的地方有克隆过版本库,在config文件中修改新的仓库地址,然后push所有的分支即可完成仓库重建。

    总结

    本文描述了在linux下配置git服务器和ssh服务,以及如何使用Windows系统连接到自建的git服务器并完成克隆、推送等一系列操作的方法。修正了一些网上教程的缺漏。在笔者的环境下(一台服务器、一台客户端)配置成功。希望本文对各位想在自己的服务器上搭建git服务进行版本控制的朋友有所帮助。

  • 相关阅读:
    五个字符就能让你电脑死机
    易语言e.exe在一些系统运行出错解决方法
    检测是否联网
    JS判断设备的类型
    JavaScript判断移动端及pc端访问不同的网站
    代码片段
    WEB前端知识在乱花渐欲迷人眼的当下,如何分清主次和学习优先级呢?
    说说JSON和JSONP,也许你会豁然开朗
    HTML5 LocalStorage 本地存储
    namenode 和datanode无法启动,错误:FSNamesystem initialization failed. datanode.DataNode: Incompatible namespaceIDs
  • 原文地址:https://www.cnblogs.com/ryuasuka/p/5776617.html
Copyright © 2011-2022 走看看