Git-分布式版本控制系统
本文根据廖雪峰老师的git教程总结得到。http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
- 安装Git
- 创建Git仓库
- 本地仓库
- 远程仓库
- 分支管理
- 标签管理
- Git服务器搭建
安装Git
- Linux:sudo apt-get install git
Windows:下载安装msysgit- 安装完成后,配置
git config –global user.name “yourname”
git config –global user.email “email@example.com”
创建Git仓库
- 创建目录
- 将目录转为仓库:终端进入该目录,输入 git init
- 添加文件到该目录/子目录下
- 添加该文件至仓库 git add 文件名
git commit -m “本次提交的说明”
本地仓库
查看 :
git status | 查看仓库当前状态 |
git diff 文件名 | 查看修改前后内容变化 |
git log | 查看版本修改信息 |
git reflog | 查看每次修改 |
git log –pretty=oneline | 每个版本修改信息均用一行列出 |
cat 文件名 | 查看文本内容 |
回退版本:
git reset –hard | HEAD | 当前版本 |
HEAD^ | 回退到上个版本 | |
HEAD~100 | 回退到上100个版本 | |
commit id | 回退到id为commit id的版本 |
撤销修改:
git checkout – 文件名 | 撤销工作区更改文件的状态至stage状态(若有)或master分支状态 |
git reset HEAD file | 撤销stage暂存区内容的修改 |
删除文件:
rm 文件名 | 删除工作区的文件 |
git rm 文件名 | 删除版本库中的文件,删除后应git commit -m添加说明 |
git checkout – 文件名 | 从分支恢复至工作区 |
远程仓库
github
- 在计算机创建SSHkey:ssh-keygen -t rsa -C “youremail@example.com”
- 在Github个人设置Accout setting添加SSH key,内容为本地.ssh中id.rsa.pub中内容
- 在Github创建仓库
- 将本地仓库上传至Github: git remote add origin Github仓库地址
git push -u origin 分支名
以后上传输入: git push origin 分支名- 将Github仓库克隆至本地: git clone git@github.com :Github仓库地址(去除https://github.com/,sh)
或 git clone 仓库地址(https)
分支管理
git branch 分支名 | 创建分支 |
git checkout 分支名 | 切换分支 |
git checkout -b分支名 | 创建并切换分支 |
git branch | 查看当前分支 |
git branch -d 分支名 | 删除指定分支 |
git branch -D 分支名 | 强行删除分支 |
git merge 分支名 | 合并指定分支至当前分支。合并分支发生冲突时,修改冲突文件,重新提交 |
通常合并分支时,Git会用fast forward模式,删除分支后会丢失分支信息。可以用–no -ff 强制禁用fast forward模式。此时会生成一个新commit。
git merge –no -ff -m “本次提交说明”
Bug分支
在当前分支工作未完成时接到修复Bug任务
- 保存当前工作现场,git stash,Git把stash内容储存起来
- 切换到有Bug的分支
- 建立新分支,修复,合并
- 切换回1中分支,回复工作现场
git stash apply | 恢复工作现场,不删除stash内容 |
git stash drop | 删除stash内容 |
git stash pop | 恢复工作现场,并删除stash内容 |
Feature分支
多人协作
git remote -v | 查看远程库详细信息 |
git push origin 分支名 | 将分支推送至远程库origin |
若推送失败:
- git pull 抓取远程的最新提交
- 合并,解决冲突后提交,再push
在本地创建和远程分支对应的分支,git checkout -b branch-name origin/branch-name;
建立本地分支和远程分支的关联,git branch –set-upstream branch-name origin/branch-name;
标签管理
Git标签实际上是指向某个commit的指针。
- 切换到要打标签的分支
- git tag 标签名 ,默认为最新提交的commit打标签,可添加commit id指定标签添加对象
创建带说明的标签: git tag -a 标签名 -m “说明文字” commit id
用私钥签名标签: git tag -s 标签名 -m “说明文字” commit id
git tag -d 标签名 | 删除标签 |
git push origin 标签名 | 推送标签至远程 |
git push origin -tags | 推送所有未推送标签至远程 |
(1) git tag -d 标签名(2) git push origin :refs/tags/标签名 | 删除远程标签(两步) |
Git服务器搭建
ubuntu下
- 安装Git :sudo apt-get install git
- 创建Git账户 :sudo adduser git
- 创建证书登陆:将登陆用户公钥导入到/home/git/.ssh/authorized_keys中
- 初始化Git库: sudo git -bare Git库名
- 禁用Shell登陆:编辑/etc/paddwd,
找到:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell - 克隆远程仓库