• 如何搭建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 。

  • 相关阅读:
    Single Number II
    Pascal's Triangle
    Remove Duplicates from Sorted Array
    Populating Next Right Pointers in Each Node
    Minimum Depth of Binary Tree
    Unique Paths
    Sort Colors
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Climbing Stairs
  • 原文地址:https://www.cnblogs.com/hello-daocaoren/p/8168973.html
Copyright © 2020-2023  润新知