Git被评价为全世界最先进的分布式版本控制系统,没有之一的那种。
为什么这么说呢?看一下他官网下面那两排图标自然就懂了。
本文主要以Windows平台来说明怎么使用Git。
安装Git
安装很简单,一路默认就好了,直接到在开始菜单里面看到Git Bash就说明安装成功了。给两个下载地址:官方下载、国内镜像
配置Git
1、配置默认路径
查看Git Bash的属性,“目标”删掉“--cd-to-home”,“起始位置”填入默认路径
2、配置用户名和邮箱地址
git config --global user.name "yourName" --global参数表示全局
git config --global user.email "yourEmail@example.com"
基础概念
Git和其他版本控制系统有些不同,他有一个暂存区的概念,这里我们先约定几个名词:
1、工作区(Working Directory):就是指你的工程目录
2、版本库(Repository):工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
3、暂存区(Stage):存储在版本库内,工作区提交文件给暂存区,再从暂存区提交给版本库。
4、远程库(Remote):一个存在远程机器上的版本库。目前比较好的远程库有Github、码云
基础指令
如果不是多人协作项目,只是个人的版本控制,看完这一段的内容就够了
在当前目录创建版本库
git init
将文件提交到暂存区
git add <fileName>
将暂存区内容提交到版本库
git commit -m "version information" -m参数表示版本信息
查看版本状态
git status
查看版本库历史记录
git log --pretty=oneline --pretty=oneline参数表示一行显示
选择版本,在Git里面,每一个版本都有一个唯一编号(commitId)
git reset --hard HEAD^ 退回到上一个版本 git reset --hard HEAD^^ 退回到上两个版本 git reset --hard HEAD^10 退回到上十个版本 git reset --hard <commitId> 跳转到任意版本
查看操作历史记录
git reflog
比较文件的差异
git diff HEAD -- <fileName>
放弃工作区的修改
git checkout -- <fileName>
从版本库删除文件
git rm <fileName>
远程仓库
Git的远程库的连接方式分为两种,一种是HTTP协议模式,这种模式每次连接都需要帐号和密码验证,并不是官方推荐的方式。另一种是GIT协议模式,这种模式需要将SSH公钥提交到远程库。
下文以Github的GIT协议为例,说明如何连接远程库。
1、本地生成SSH KEY
ssh-keygen -t rsa -C "youremail@example.com"
2、把生成出来的id_rsa.pub公钥填到Github的官网
注1:SSH可以添加多个,如果你有多台电脑的话
注2:Github的项目是公开的,如果要私有的话需要交费,国内的码云和Github类似,提供5人以下的私有项目。
将本地库推送到远程库
git remote add origin git@github.com:user/repo.git origin为远程库默认名
git push -u origin master -u参数首次推送使用,可以将本地库和远程库关联起来 master为本地库默认名
从远程库克隆到本地库
git clone git@github.com:user/repo.git
从远程库获取最新版本到本地库
git pull
查看远程库信息
git remote -v
删除远程库信息
git remote rm origin
分支
分支是Git的难点,也是Git比其他版本控制强大的原因。
查看分支
git branch
创建分支
git branch <name>
切换分支
git checkout <name>
创建并切换分支
git checkout -b <name>
合并某分支到当前分支
git merge <name>
删除分支
git branch -d <name>
查看分支合并图
git log --graph
保存工作现场
git stash
回到工作现场
git stash pop
放弃一个没有被合并过的分支
git branch -D <name> 大写D是强行删除的意思
推送分支
git push origin <name>
创建远程分支
git checkout -b <name> origin/<name>
建立本地分支和远程分支的关系
git branch --set-upstream <name> origin/<name>
分支提交历史整理成直线
git rebase
标签
给版本一个明确标签,有助于后期维护。
创建标签
git tag <tagName>
创建历史标签
git tag <tagName> <commitId>
查看标签信息
git show <tagname>
删除标签
git tag -d <tagName>
推送标签
git push origin <tagName>
推送所有标签
git push origin --tags
删除远程标签
git push origin :refs/tags/<tagName>
其他
1、忽略特殊文件.gitignore
我们不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
git add -f <fileName> 强制添加文件到Git,不管是不是被忽略 git check-ignore -v <fileName> 检测文件是否被忽略
2、配置别名
git config --global alias.st status
3、查看配置信息
cat .git/config 版本库
cat .gitconfig 全局