• 如何搭建Git服务器


    安装git

    首先需要在服务器上安装git环境,以centos为例:

    yum install git
    

    然后添加一个用户,就叫git吧。

    adduser git
    passwd git
    input your password...
    

    然后在终端输入 git

    安装成功

    添加信任关系

    linux默认是不信任任何机器的,通过ssh登录其他主机都需要输入密码,建立信任关系的过程就是一台主机生成公钥,把公钥放到其他主机上,然后这个主机通过ssh登录其他机器就不需要输入密码了。
    在用户家目录下默认是没有.ssh目录的:

    cd /home/git
    ls -al
    

    因为没有生成过公钥,生成公钥和私钥的命令为:(-t 的意思是加密算法为rsa)

    ssh-keygen -t rsa
    ls -al 
    

    一路回车,然后在用户的家目录下能看到 .ssh 目录。收集所有需要登录的用户的公钥,就是该用户的/.ssh/id_rsa.pub文件,把所有公钥导入/home/git/.ssh/authorized_keys文件。然后就可以通过ssh username@ip 直接远程登录其他机器,而不需要使用密码了。由于git跟远程仓库的交互主要依靠http和ssh,这个步骤的目的就是让远程提交的时候不需要每次都输入密码。

    问题是window下如何生成这个公钥呢?
    通过windows下的git工具就可以生成公钥了,而且生成的公钥也是在当前用户的家目录。

     scp  C:/Users/semptian/.ssh/id_rsa.pub git@47.95.11.33:/tmp
     ssh git@47.95.11.33 "cat /tmp/id_rsa.pub >> /home/git/.ssh/authorized_keys"
    

    scp是远程复制的命令,把本地的公钥文件远程复制到/tmp下;然后登录服务器,把/tmp下的文件添加到git用户的authorized_keys中。
    本地通过ssh命令登录到远程服务器不要密码,算是信任关系已经建立。

    初始化git仓库

    先选定一个目录作为远程git仓库。

    su root
    mkdir /srv/repository/sample
    cd /srv/repository/sample
    git init --bare sample.git
    ls -al
    

    把远程仓库于本地之间的交互

    在本地的一个目录下运行git Bash

    git clone git@47.95.11.33:/srv/repository/sample/sample.git
    

    本地代码的提交:

    git init  #初始化本地文件夹为git仓库
    git add .  #把当前文件夹中的所有文件添加到git仓库,也可以添加某一个文件。
    git commit -m "commit"  #提交
    git remote add origin git@47.95.11.33:/srv/repository/sample/sample.git
    #与github仓库建立远程连接
    git push -u origin master  #把本地的项目推送到github远程仓库
    
    1、git remote add origin git@47.95.11.33:/srv/repository/sample/sample.git 
      #与远程仓库建立远程连接
    2、git push -u origin master 
      #把本地的项目推送到github远程仓库
    1、2两个命令等价于以下这个命令:
    git push -u origin master git@47.95.11.33:/srv/repository/sample/sample.git
    

    如果当前分支与多个主机存在追踪关系,可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push,然后下次就提交之后就可以直接 git push 了。

    #与远程仓库同步
    git pull --rebase origin master
    

    遇到的一些错误

    在提交的时候报错:

    $ git commit -m "test_02"
    *** Please tell me who you are.
    Run
      git config --global user.email "you@example.com"
      git config --global user.name "Your Name"
    to set your account's default identity.
    Omit --global to set the identity only in this repository.
    fatal: unable to auto-detect email address (got 'semptian@DESKTOP-QVJGTA9.(none)')
    

    提示中git config --global 是全局的配置,单独为项目配置的方法(全局和单独配置都存在的时候会默认使用项目单独配置的):
    1.打开项目所在目录,找到隐藏的.git文件夹。注意这个文件夹是隐藏的,显示隐藏出来就行。
    2.打开文件夹里的config文件,推荐用nodepad++打开。
    3.添加这三行到文件:

    [user]
        name = XXX(自己的名称)
        email = XXXX(邮箱)
    

    输入 git log 报错:

    fatal: Not a git repository (or any of the parent directories): .git
    

    需要在git仓库的根目录中使用git命令。

    push到远程的时候报错:

    fatal: remote part of refspec is not a valid name in 
           git@47.95.11.33:/srv/repository/sample/sample.git
    

    可能这是第二次提交,添加了远程仓库之后可以直接 git push 。

  • 相关阅读:
    40种网页常用小技巧(javascript)
    伸缩效果
    震动的超链
    一个模仿图片透明渐变做的表格颜色渐变效果
    荧 光 效 果
    用LoadRunner编写socket应用的测试脚本
    突发奇想写的一篇小科幻(如果可以叫做科幻的话)
    《软件性能测试过程详解与案例剖析》一书在Chinapub上8月份的销售排名持续上升
    建立高效的测试团队
    探索性测试(Exploratory Testing)概述
  • 原文地址:https://www.cnblogs.com/hello-daocaoren/p/8168973.html
Copyright © 2020-2023  润新知