Git简介
由于强烈反对CVS和SVN这些集中式版本控制系统,又面临BitMover公司要收回Linux社区对其旗下商业版本控制系统BitKeeper的免费使用权,Linux之父Linus花了两周时间自己用C语言写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理!
相比SVN等集中式系统需要“中央服务器”,并必须联网才能管理版本,分布式的Git则在每个人的电脑上都是一个完整的版本库,工作的时候不需联网。
Git先进的分支管理及工作速度更是甩SVN几条街。Git是目前世界上最先进的分布式版本控制系统。
Git安装
访问Git官网https://git-scm.com/, 并进入下载界面https://git-scm.com/downloads,下载最新版本的Git,并安装。
Windows中安装完成后,在资源管理器右键点击“Git Bash Here”,在当前文件夹打开Git命令窗口
打开后在命令行窗口中输入一下命令配置账号信息,--global
表示在此电脑上所有Git 仓库都使用这个配置。
$ git config --global user.name "your name"
$ git config --global user.email "email@example.com"
Git使用
创建版本库
$ git init
Initialized empty Git repository in E:/study/Git/learngit/.git/
上传文件
$ git add readme.md
$ git commit -m "commit readme.md"
[master (root-commit) ff4d872] commit readme.md
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 readme.md
查看修改内容
git diff readme.md
提交日志查看
$ git log
$ git log --oneline //单行显示
$ git log -n3 //显示最近三次提交的日志
$ git log -n3 --oneline //多参数
$ git reflog //查看命令历史
$ git log --graph //日志图像化
撤销修改
$ git restore readme.md //暂未add到暂存区,从暂存区覆盖工作区文件
$ git restore --staged readme.md //已添加到暂存区,删除暂存区修改
版本回退
$ git reset --hard HEAD^ //回退上一个版本 HEAD^^:上上一个 HEAD~100上100个版本
删除/还原文件
$ git rm readme.md
$ git commit -m "delete readme.txt"
$ git checkout -- readme.txt //还原删除
分支管理
创建与合并
$ git branch //查看分支
$ git branch <name> //创建分支
$ git switch <name> //切换分支 或者使用 git checkout <name>
$ git switch -c <name> //创建并切换分支 或git checkout -b <name>
$ git merge <name> //合并某分支到当前分支
$ git branch -d <name> //删除分支
$ git branch -D <name> //强制删除分支
BUG版本
$ git stash // 存储当前dev分支工作状态
$ git checkout master //切换到主分支
$ git chekout -b issue-bug-99 //从master分支中创建bug版本,并进行bug修复
$ git switch master //切换到主分支
$ git merge --no-ff -m "merged bug 99 fix 100" issue-bug-99//合并到master
$ git switch dev //切换到dev工作分支
$ git stash list //查看存储的分支信息
$ git stash apply //恢复存储的分支信息
$ git stash drop //删除存储的分支信息
$ git stash pop //恢复并删存储的分支信息
$ git cherry-pick 1e123025c //bug99提交信息应用到当前分支,1e123025c为提交号
标签管理
创建标签
$ git tag v0.2 //给当前版本打上v0.2的标签
$ git tag v0.1 1e123025c //给1e123025c提交号的版本打上v0.1的标签
$ git tag //查看所有标签
$ git show v0.1 //查看标签为v0.1的版本信息
$ git tag -a v0.1 -m "version 0.1" 1e123025c //创建带说明的标签
$ git push github v0.1 //推送v0.1标签到远程github仓库
$ git push github --tags //推送所有本地标签到远程github仓库
删除标签
$ git tag -d v0.1 //删除v0.1的标签
$ git push github :rdfs/tags/v0.1 //删除远程github仓库的标签