Git 的2中安装方法
1. yum命令安装:
yum install -y git
2. 服务编译安装(推荐)
2.1 安装依赖包
yum install -y wget yum install -y gcc-c++ yum install -y zlib-devel perl-ExtUtils-MakeMaker
2.2 下载最新git
cd /usr/local/src wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.0.tar.gz
2.3 编译安装git
tar -zxvf git-2.9.0.tar.gz cd git-2.9.0 ./configure --prefix=/usr/local/git make make install
2.4 添加环境变量
1.将 /usr/local/git/bin 加到后面,用:隔开 vim /root/.bash_profile PATH=$PATH:$HOME/bin:/usr/local/git/bin 2.重启 source /root/.bash_profile
2.5查看git版本
git --version
3创建git用户
groupadd git useradd git -g git passwd git #设置密码 参数是用户名 su - git //切换git用户
4创建证书
4.1 客户端安装git,设置key
git config --global user.name "dddd" git config --global user.email "qq@qq.com" ssh-keygen -t rsa -C "your_email"
该命令会产生两个文件: id_rsa对应私钥,id_rsa.pub对应公钥。将id_rsa.pub中的内容写到服务器的authorized_keys文件中。如果有多个客户端,那么在authorized_keys文件中,一行保存一个客户端的公钥
4.2 服务器端: 创建authorized_keys文件
cd /home/git mkdir .ssh chmod 700 .ssh touch .ssh/authorized_keys chmod 600 .ssh/authorized_keys cd /home chown -R git:git git
4.3 配置RSA
进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:
RSAAuthentication yes 最新版centos7.4无需配置、没有的不配置
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
4.4 保存并重启 sshd 服务:
service sshd restart
4.5 将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件
ssh git@192.168.136.19 'cat >>.ssh/authorized_keys' < ~/.ssh/id_rsa.pub
5将git设置为默认路径,不然后面克隆时会报错
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
6. 初始化Git仓库
#进入home目录 cd /home #创建gitdemo目录 mkdir gitdemo # 利用 chown 将指定文件的拥有者改为指定的用户或组 # 把仓库所属用户改为git chown git:git gitdemo/ cd gitdemo #现有仓库导出为裸仓库——即一个不包含当前工作目录的仓库 git init --bar demo.git #把仓库所属用户改为git #-R : 处理指定目录以及其子目录下的所有文件 #将目录下的所有文件与子目录的拥有者皆设为git群体的使用者 git : chown -R git:git demo.git #以后每创建一个新的仓库.都需要执行上面的命令(修改仓库所属用户为git)
7. 克隆仓库
git clone git@192.168.**.**:/home/gitdemo/demo.git
8. 禁止git用户 Shell登录
vim /etc/passwd git:x:502:502::/home/git:/usr/local/git/bin/git-shell
9.git常用操作
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com" $ ssh-keygen -t rsa -C "youremail@example.com" 创建ssh key,用于和github通信 (秘钥存储于C:Users27634.ssh,把公钥id_rsa.pub存储于github) 创建版本库 $ pwd 命令用于显示当前目录(没啥用) $ git init 把这个目录变成Git可以管理的仓库(后续新建提交和ssh克隆需要) 操作版本库 $ git add 文件名 添加文件(新增或者更改都需要先add) $ git commit -m "说明" 提交到本地版本库 $ git status 查看仓库状态 $ git diff 文件名 查看修改的地方 版本回退(从一个commit恢复) $ git log 查看版本历史 $ git reset --hard HEAD^ 回退到上个版本 $ git reset --hard 1094a 回退到特定版本号(commit以后回退) $ git reflog 记录每一次命令 $ git checkout -- file 直接丢弃工作区的修改(add以前回退) $ git reset HEAD <file> 添加到了暂存区时,想丢弃修改(add以后回退) 删除文件 $ git rm file(已经add/commit,在目录中删除) $ git checkout -- file 删错了回退 远程仓库 $ git remote add origin git@server-name:path/repo-name.git 关联远程库 $ git push -u origin master 第一次的push $ git push origin master 常用的push,本地分支会在服务器上新建分支 $ git pull 需要有关联的分支,第一次下拉最好新建一个空文件夹 $ git branch --set-upstream-to=origin/远程分支 本地分支 关联分支 $ git clone git@server-name:path/repo-name.git 克隆(不需要另建文件夹) 分支 $ git branch -a 查看所有分支 $ git branch -vv 查看分支关联 $ git branch dev 创建分支 $ git checkout dev 切换分支 $ git merge dev 合并某分支到当前分支 $ git merge --no-ff -m "msg" dev 普通模式合并,合并后的历史有分支 $ git branch -d dev 删除分支 $ git checkout -b dev 创建并切换分支 合并分支,无法merge $ git stash save 名字 暂存工作状态 $ git pull origin dev 拉下来 $ git stash list 查看已经暂存的状态 $ git stash pop stash@{0} 将暂存状态merge到当前分支 还有冲突时,手动修改文件,然后add/commit $ git log --graph 分支合并图 bug分支issue $ git stash 暂存工作状态 $ git stash list 查看暂存工作状态 $ git stash pop 恢复暂存状态并删除状态 开发分支feature $ git branch -D <name> 强制删除未合并的分支 rebase $ git rebase 本地未push的分叉提交历史整理成直线 标签 $ git tag 标签名 打在最新提交的commit上 $ git tag 查询所有标签 $ git tag 标签名 f52c633 给特定的commit打标签 $ git tag -a 标签名 -m "msg" commit的id 给标签设置说明 $ git show 标签名 查询标签内容 $ git tag -d 标签名 删除标签 $ git push origin 标签名 推送某个标签到远程 $ git push origin --tags 推送所有标签 $ git push origin :refs/tags/<tagname> 可以删除一个远程标签。