git安装使用及免密码

window 客服端 centos服务端git安装使用,站点自动同步

git下载地址

服务端https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.0.0.tar.gz
客户端https://github.com/git-for-windows/git/releases/download/v2.24.1.windows.2/Git-2.24.1.2-64-bit.exe

服务端安装git及依赖

查看是否有安装git
    rpm -qa | grep git
卸载git
    rpm -e --nodeps  git
依赖安装
    yum install expat-devel perl-ExtUtils-MakeMaker package -y
解压git-2.0.0.tar.gz
    tar zxvf  git-2.0.0.tar.gz
进入git-2.0.0目录
    make prefix=/usr/local/server/git all
    make prefix=/usr/local/server/git install
查看版本
    git --version
创建用户组
    groupadd git
创建用户及项目目录
    useradd gitlap -d /usr/local/server/project.git -g git
创建用户及目录错误可以使用下面命令来删除
    userdel gitlap
    rm -rf /var/spool/mail/gitlap 
    rm -rf /usr/local/server/project.git
设置密码
    passwd gitlap
设置权限组
    chown -R gitlap:git /usr/local/server/git
初始化仓库
    git init --bare /usr/local/server/project.git
设置权限组
    chown -R gitlap:git /usr/local/server/project.git/
创建软连接
    ln -s /usr/local/server/git/bin/git /usr/bin/git
    ln -s /usr/local/server/git/bin/git-upload-pack /usr/bin/git-upload-pack
    ln -s /usr/local/server/git/bin/git-receive-pack /usr/bin/git-receive-pack
用户添加到用户组
    usermod -G git lllanpl
给目录权限
    chmod -R g+ws ./*
给用户组权限
    chgrp -R  gitgroup  ./*
    git config core.sharedRepository true

客户端安装使用

  安装就不説了,跟着提示下一步就
使用:
    新建文件夹,右键选择Git bash Here
    设置名称邮箱
        git config --global user.name '名称'
        git config --global user.email '邮箱'
    从远程库克隆一个到本地库
        git clone gitlap@192.168.2.100:/usr/local/server/project.git
    关联本地仓库,远程库的名字为origin
        git remote add origin gitlap@192.168.2.100:/usr/local/server/project.git
    解决文件空格冲突
        git rm -r --cached .
        git config core.autocrlf false
    把所有要提交的文件修改放到暂存区
        git add 文件名称
    把暂存区的所有内容提交到当前分支
        git commit -m '提示语/描述' 
    第一次把当前分支master推送到远程,-u参数不但推送,而且将本地的分支和远程的分支关联起来
        git push -u origin master
    把当前分支master推送到远程
        git push origin master
    查看工作区状态                                     
        git status
    查看文件修改内容
        git diff 
    查看提交历史
        git log
    单行显示
        git log --pretty=oneline
    回退到上一个版本,其中(HEAD^^(上上版本),HEAD~100(往上100个版本))
        git reset --hard HEAD^
    (版本号) 可回到指定版本
        commit id 
    查看历史命令
        git reflog
    查看工作区和版本库里最新版本的区别
        git diff HEAD -- <file>
    用版本库的版本替换工作区的版本,无论是工作区的修改还是删除,都可以'一键还原'
        git checkout -- <file>
    把暂存区的修改撤销掉,重新放回工作区。
        git reset HEAD <file>
    删除文件,若文件已提交到版本库,不用担心误删,但是只能恢复文件到最新版本
        git rm <file>

其中说明

    【工作区(Working Directory)
            版本库(Repository) #.git
            stage(index) 暂存区
            master Git自动创建的分支
            HEAD 指针
    】

免密码,创建证书登录

    添加证书之前,还要做这么一步:
    1、首先将Git服务器/etc/ssh/ssh_config文件打开RSA认证 。打开ssh_config文件中下面的几个注释,没有自行添加:
        RSAAuthentication yes     
        PubkeyAuthentication yes
        AuthorizedKeysFile .ssh/authorized_keys
    2、创建authorized_keys文件,用于存储客户端公钥
        然后执行以下命令,创建一个文件为: /usr/local/server/project.git/.ssh/authorized_keys
            mkdir /usr/local/server/project.git/.ssh
            chmod 700 /usr/local/server/project.git/.ssh
            touch 700 /usr/local/server/project.git/.ssh/authorized_keys
            chmod 600 /usr/local/server/project.git/.ssh/authorized_keys
        修改.ssh/authorized_keys的拥有者
            chown gitlap:git /usr/local/server/project.git/.ssh
            chown gitlap:git /usr/local/server/project.git/.ssh/authorized_keys
    3、创建客户端公钥(.pub文件)
        创建私钥,执行 ssh-keygen -t rsa -C "你的邮箱"
        linux可直接执行/windows可在Git Bash命令行窗口执行该命令,命令后,不输入,直接3个回车,( linux在/root/.ssh目录下、window在C:\Users\Administrator\.ssh)会生成id_rsa和id_rsa.pub两个文件,将id_rsa.pub文件内容追加到authorized_keys文件里,一个一行
    4、禁止git用户登录
        为安全起见,需要禁止git用户登录服务器,修改/etc/passwd文件:
            找到git用户的配置:
            gitlap:x:1001:1001::/home/git:/bin/bash
            改为:
            gitlap:x:1001:1001::/home/git:/bin/git-shell

分支

    创建并切换分支
        git checkout -b dev    相当于git branch dev 和git checkout dev
    查看当前分支,当前分支前有个*号
        git branch
    创建分支
        git branch <name>
    切换分支
        git checkout <name>
    合并某个分支到当前分支
        git merge <name>
    删除分支
        git branch -d <name>
    查看分支合并图
        git log --graph
    禁用Fast forward合并dev分支
        git merge --no-ff -m 'message' dev
    隐藏当前工作现场,等恢复后继续工作
        git stash 
    查看stash记录
        git stash list 
    仅恢复现场,不删除stash内容
        git stash apply
    删除stash内容
        git stash drop
    恢复现场的同时删除stash内容
        git stash pop
    强行删除某个未合并的分支
        git branch -D <name> 
        开发新feature最好新建一个分支
    查看远程仓库/详情
        git remote
        git remote -v 
    抓取远程提交
        git pull
    在本地创建和远程分支对应的分支
        git checkout -b branch-name origin/branch-name
    建立本地分支和远程分支的关联
        git branch --set-upstream branch-name origin/branch-name

其他---标签

    给当前分支最新的commit打标签
        git tag v1.0
    -a指定标签名,-m指定说明文字
        git tag -a v0.1 -m 'version 0.1 released' 362816
    可以用PGP签名标签
        git tag -s <tagname> -m 'blabla' 
    查看所有标签
        git tag 
    查看标签信息
        git show v1.0
    删除标签
        git tag -d v0.1
    推送某个标签到远程
        git push origin <tagname>
    推送所有尚未推送的本地标签
        git push origin --tags

服务器设置自动同步站点

    自动同步功能用到的是 git 的钩子功能,
    在git项目下的hooks下新建post-receive文件
        vim /usr/local/server/project.git/hooks/post-receive
    加入下面代码
         #!/bin/bash
        git --work-tree=/usr/local/server/www checkout -f
        chmod -R 777 /usr/local/server/www/*
    给新建文件post-receive 执行或777权限
        chmod +x post-receive 
        chmod 777 ./post-receive
    创建完成就可以自动同步站点啦,
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 4,438评论 0 5
  • 1.1.获取所需软件包 git-2.4.2.tar.gz 下载地址去网上找找就好了,这里就不给出了 1.2.安...
    陈旭员阅读 356评论 0 0
  • Ubuntu下Git服务器安装与配置 1. 安装 1.1 安装Git-Core: sudo apt-get ins...
    13c9acfa5878阅读 247评论 0 0
  • 作为一个曾经写过Code的产品经理,对于开发工作还是有一些执念,一直在通过各种方式捣鼓过代码。其中也接触到了git...
    laughing_8c3d阅读 516评论 0 3
  • 1.感恩自己,一直努力,积极地面向阳光,积极地专注当下,积极地呼吸法,听课。所以一直在线上,从未恐惧忧伤 2.感恩...
    梦落瑶池阅读 134评论 0 0

友情链接更多精彩内容