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
    创建完成就可以自动同步站点啦,
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容

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