• Git安装配置(完整版)


     

    首先安装Windows客户端的git和TortoiseGit。

    安装这两个软件还是蛮重要的,很多选项不能乱选。

     

    为了写个完整的博客,我是装了又卸,卸了又装。

     

    1.安装git

    下载:https://git-scm.com/

     

    2.安装TortoiseGit

    下载 https://tortoisegit.org/download/ 别忘了中文语言包也一起下载了

    当把乌龟安装好后遇到语言选择的界面先别动,直接安装中文包,中文包安装好后再继续配置乌龟点击refresh就可以选择中文继续往下走。

     

     

    3.安装git

    yum install git

     

    4.创建存储目录(涉及路径乃自定义,看心情。)

    mkdir /var/gitdata

    单给一个777权限 以便将来用git账号在这里创建git仓库

    chmod 777 /var/gitdata

     

    5.添加git用户(其实后来我把git用户换到了root组 还挺方便的)

    groupadd git

    useradd git -g git

    passwd git

     

    6.切换到git账号

    su git

     

    7.创建项目仓库

    cd /var

    mkdir gitdata/a.git

     

    8.初始化裸仓库

    git init --bare gitdata/a.git

     

    9.创建公钥

    ssh-keygen(按这条命令的时候直接按回车 不要输入东西)

    然后会在当前用户也就是git用户的家目录里生成一个.ssh目录 里面id_rsa是私钥 id_rsa_pub是公钥

     

    10.切换回root

    su root

    vi /etc/ssh/sshd_config

    打开以下注释:

    PubkeyAuthentication yes

    AuthorizedKeysFile .ssh/authorized_keys (指定存放公钥的路径是git家路径.ssh下的authorized_keys)

     

    11.重启sshd服务

    systemctl restart sshd.service

     

    12.客户端创建公钥

    在本地项目目录中找个空目录,点击右键打开git bash

    ssh-keygen(按这条命令的时候直接按回车,不要输入东西)

    此时,C:user用户名.ssh下会多出两个文件id_rsa是私钥,id_rsa_pub是公钥。

     

    13.下面两条语句客户端和服务器端都要执行 输入自己github上的用户名和邮箱

    git config --global user.name zhao-baolin

    git config --global user.email 937240319@qq.com

     

    14.服务端存放客户端公钥

    vi /home/git/.ssh/authorized_keys

    将客户端的公钥文件里的东西全部复制进去 当然 当前目录下的那个id_rsa.pub里的内容也可以一股脑儿复制进来。

     

    15.修改权限

    .ssh目录的权限必须为700(必须)

    chmod 700 /home/git/.ssh

     

    .ssh/authorized_keys文件的权限必须为600(必须)

    chmod 600 /home/git/.ssh/authorized_keys

     

    修改家目录所有者

    chown -R git:git /home/git

     

    16.github存放服务端公钥

    打开https://github.com/ 登陆账号 进入设置

    在SSH and GPG keys中添加Linux服务端的公钥,title随便填,内容把公钥文件里的东西全部复制过来就行。

    回到Linux 输入以下命令:

    ssh -T git@github.com

    输入yes回车 提示成功

     

    17.检出项目(用git的话叫做克隆项目)

    切换git账号

    su git

    git clone git@192.168.11.11:/var/gitdata/a.git

    以上命令客户端打开bash输入一遍,服务端也输入一遍。

    如果服务器更新遇到这个错
    fatal: Couldn't find remote ref master
    fatal: The remote end hung up unexpectedly

    或者客户端更新遇到这个错
    Your configuration specifies to merge with the ref 'refs/heads/master'
    from the remote, but no such ref was fetched.

    请不要慌乱 曾经我在这里持续折腾了七个小时 网上查了个底朝天也没查到解决办法
    最后找到原因之后 我才明白为什么网上查不到 因为没人有我这么傻逼

    原因是没有找到master分支 为什么没有master分支呢 因为master分支是首次提交后创建的 然而我克隆了就直接pull 简直就是脑残  当时我只是想测试一下跑不跑得通。。。

    18.一些简单的命令

    原来这里写了一些简单的命令  后来我自己都懒得看  因此贴一篇比较详细的资料在文章末尾 方便查阅

     

    19.钩子

    切换root账号

    su root

     

    vi /var/gitdata/shici.git/hooks/post-receive

    输入以下四行内容:

    #!/usr/bin/bash

    cd /var/www/a

    unset GIT_DIR

    git pull origin master

    (第一行请自行以whereis bash查找一下你服务器上的bash路径,第二行cd进项目目录)

     

    再给个权限:

    chmod 755 /var/gitdata/a.git/hooks/post-receive

    chown git:git /var/gitdata/a.git/hooks/post-receive

    这样客户端提交代码,服务端项目就可以自动更新了,前提是必须切换到git账号手动拉取一下项目,进行一个yes授权记住密码,否则无法自动更新。客户端也一样,所有的基本操作最好先用bash命令行走一圈。

     

    20.禁止登陆shell

    vi /etc/passwd

    找到git用户那一行 改为:

    git:x:1001:1000::/home/git:/usr/bin/git-shell

    (最后的路径是你的服务器上git-shell的实际路径)

     

     

    将来若要添加新仓库

    可修改/etc/passwd文件允许git用户登入shell

    然后登录git账号做以下操作

    1. 切入仓库目录 cd /var/gitdata

    2. 创建仓库 mkdir b.git

    3. 初始化仓库 git init --bare b.git

    4, 创建钩子 vi /var/gitdata/b.git/hooks/post-receive

    5. 输入以下四行内容
    #!/usr/bin/bash
    cd /var/www/b
    unset GIT_DIR
    git pull origin master

    6, 修改权限 chmod 755 b.git/hooks/post-receive

    7. 切进项目目录 cd /var/www

    8. 如果用的root账号做的这些事情  那么请一定记住把目录所有者设置为git

    chown git:git -R /var/gitdata

    chown git:git -R /var/www/b

    9. 克隆项目 git clone git@192.168.11.11:/var/gitdata/b.git

    git命令清单:

    http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

  • 相关阅读:
    [bzoj3694]最短路
    [bzoj3172][Tjoi2013]单词
    [bzoj2243][SDOI2011]染色
    [bzoj1036][ZJOI2008]树的统计Count
    [学习笔记]树链剖分
    [bzoj4552][Tjoi2016][Heoi2016]排序
    [51nod1515]明辨是非
    [51nod1685]第k大区间
    [日常训练]training
    BZOJ3811: 玛里苟斯
  • 原文地址:https://www.cnblogs.com/fengyumeng/p/7478605.html
Copyright © 2020-2023  润新知