版本控制工具
集中式:
- CVS
- SVN 集大成者
分布式:git
- 创始人:inux Towards 2005年
工具
- 最好使用linux(oh-my-zsh)
- gitbash -> cygwin
- git service :gitolite
工作区 --> 暂存区 --> 服务器
基本命令:
#当前仓库配置文件路径:.git/config#当前用户配置文件路径:当前用户主目录下隐藏的 .gitconfig#配置全局用户名、邮箱, global是作用于当前用户的,不加则只作用于当前仓库,$ git config --global user.name "mbq"$ git config --global user.email "mbq6060@qq.com"#配置全局显示颜色$ git config --global color.ui tru#为命令配置别名alias. <别名> $ git config --global alias.st status#配置全局日志输出样式别名git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"#初始化git仓库$ git init#添加文件到版本库$ git add#添加当前目录下的所有文件$ git add . #提交版本$ git commit -m "提交描述"#查看仓库状态$ git status#查看git版本区别$ git diff#删除文件git rm 别名>#历史日志#查看提交历史纪录,倒序排列,数字表示查看最后几次提交历史$ git log [1]#简化为一行展示$ git log --pretty=oneline#查看自己的历史操作(可以回退到这些版本)$ git reflog#回退到上一个版本,也可使用HEAD~100$ git reset --hard HEAD^ #回退到指定版本号,--和hard间没有空格$ git reset --hard 116f748--soft 表示仍然保留当前工作区的更改#撤销工作区的更改(还未进行 add 操作)$ git checkout -- readme.txt$ git checkout [commit-number] --readme.txt 将此文件退到指定版本#分支管理#创建并切换分支dev$ git checkout -b dev#相当于以下两条命令$ git branch dev$ git checkout dev (切换到之前的版本则会进入到一个游离分支状态(分离的头指针),git merge 可以合并回来)#查看当前分支$ git branch#合并分支(Fast Forward)$ git merge dev#删除分支$ git branch -d dev#以普通模式合并分支,能从历史中看出来,而fast forward合并方式看不出来$ git merge --no-ff -m "merge with noff" dev#图形化展示分支及合并情况$ git log --graph --pretty=oneline --abbrev-commit#储藏当前工作空间$ git stash#查看储存的工作空间$ git stash list#恢复并删除储存的工作空间$ git stash pop#相当于以下两条命令$ git stash apply$ git stash drop#创建SSH Key$ ssh-keygen -t rsa -C "mbq6060@qq.com"#查看远程仓库信息$ git remote -v#连接到远程仓库$ git remote add origin git@github.com:mabaoqing/learngit.git#基本(常用)操作#克隆仓库$ git clone git@github.com:mabaoqing/learngit.git#从远程获取最新仓库$ git pull#推送到远程仓库,-u只在第一次推送时使用,将仓库推送并关联两端master分支$ git push -u origin master #创建远程分支到本地$ git checkout -b dev origin/dev#将本地dev分支和远程分支进行关联$ git branch --set-upstream-to=origin/dev dev#标签#为某次提交打标签,确定一个版本$ git tag v1.0 [版本号]# 创建带有说明的标签$ git tag -a v1.0 -m 'version 1.0 releasd' [版本号]#查看标签状态$ git show # 删除标签$ git tag -d # 推送标签到远程$ git push origin # 推送多个标签$ git push origin --tags# 删除远端标签$ git tag -d $ git push origin :refs/tags/ #忽略文件。创建.gitignore文件配置需要忽略的文件,在编辑器中另存为才行,不能直接创建#强制添加忽略的文件$ git add -f #检查.gitignore文件中的配置规则与文件匹配$ git check-ignore -v