一、Git简介
Git 是一个开源的分布式版本控制系统。
Git版本控制的功能为保存不同版本的代码,保存代码的地方叫做仓库。
每个仓库中有多个分支,每个分支上又有很多节点,每个节点代表一个版本,不同的分支可以进行合并,实现多个功能的同时开发。
一个完整的Git版本控制系统有两个仓库,一个仓库在服务器上,另一个仓库在本地。服务器仓库主要作用为团队协作和多端同步,可以将本地的仓库的某个分支上传至服务器某个分支;本地仓库的作用主要是提交自己的代码至本地仓库某个分支和下载服务器仓库的某个分支。
二、安装Git
1、官网下载git安装,有Windows版本和Linux版本:http://git-scm.com/downloads
2、配置用户信息:
git config --global user.email "xxx@yy.com"
git config --global user.name "yyy"
git config user.email "xxx@yy.com"
git config user.name "zzz"
如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。
3、查看配置信息
git config --list
三、Git使用流程
1 工作区:本地,工作的目录,就是电脑里能看到的目录。
2 暂存区:本地,工作区的更改,提交到暂存区(在暂存区临时存储),一般存放在 .git 目录下的 index 文件(.git/index)中。
3 版本库:本地文件,内容变更记录。工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
四、Git常规操作
1、git init # 初始化git仓库(保存代码的地方叫做仓库)
git init #“用来初始化一个空的git本地仓库。执行完上面的命令,当前目录下会自动生成.git隐藏文件夹,该隐藏文件夹就是git版本库”。这样我们才能在使用git命令进行相关的操作
cd 目标文件夹内部 #将已有的文件夹 - 初始化为git仓库
git init
-------------------------------------------------------------------
cd 目标目录 #在指定目录下 - 初始化git仓库
git init 仓库名注意:.git目录默认隐藏,可以通过命令ls -ah显示
2、仓库用户名/邮箱配置
要往版本库提变更,需要先配置用户
# 全局配置
git config --global user.email "xxx@yy.com"
git config --global user.name "yyy"
# 本地仓库用户名/邮箱配置
git config user.email "xxx@yy.com"
git config user.name "zzz"
3、下载Git代码到本地:
git clone [https]
4、git status # 查看状态
-红色:更改没有被提交到暂存区-绿色:更改被提交到暂存区,但是没有被提交到版本库
5、提交到暂存区
git add a.txt # 把a.txt提交到暂存区 (git add .)git add . # 当前路径下所有更改,提交到暂存区
6、从暂存区提交到版本库(不能从工作区直接提交到版本库)
git commit -m '注释注释一定要加,并且有意义' # 从暂存区提交到版本库(必须加注释,不加注释提交不上去)
7、推送本地仓库当前分支代码至远程git仓库
git push <远程主机名> <本地分支名>:<远程分支名>
8、将git最新代码拉下来与当前本地分支合并
git pull [https]
9.删除git仓库指定文件文件或文件夹
dir 查看文件或文件夹
git rm -r --cached 文件或文件夹名 #待删除的文件夹或者文件名
10、回滚(回滚到指定版本)
git reset --hard 版本号
五、Git GUI使用方法
Git还有GUI工具,比较适用小白。
六、Git创建分支
1、查看分支
git branch # 查看有哪些分支,绿色表示当前所在分支
2、创建分支
git branch (branchname) #在那个分支上创建分支,目前新分支和所在分支代码一样
3、删除分支
git branch -d (branchname)
4、切换分支
git checkout (branchname)
5 分支合并
git merge 分支名 #现在在dev分支,要把dev分支合并到master分支:先切换到master分支,再执行合并dev分支的命令
6 创建并切换到某个分支(两部并作一步)
git checkout -b 分支名 #检出
7、查看提交历史
git log - 查看历史提交记录。
git blame <file> - 以列表形式查看指定文件的历史修改记录。
七、tag的简单使用
1、打tag
git tag -a 标签名称 -m 附注信息 :直接给当前的提交版本创建一个标签
git tag -a 标签名称 提交版本号 -m 附注信息 :给指定的提交版本创建一个标签
需要说明的是,创建 tag 是基于本地分支的 commit,而且与分支的推送是两回事,就是说分支已经推送到远程了,但是你的 tag 并没有,如果把 tag 推送到远程分支上,需要另外执行 tag 的推送命令
2、查看tag
git tag #直接列出所有的标签
git tag -l #查看本地所有 tag
git tag -l xxxx : 可以根据 xxxx 进行标签的筛选
git ls-remote --tags origin #查看远程所有 tag
3 删除本地仓库tag
git tag -d <tagName> #删除标签
4 提交
git add .
git commit -m “fixed some bugs”
git tag -a 0.1.3 -m “Release version 0.1.3″
5 推送到远程仓位
默认情况下,git push 命令并不会把标签推送到远程仓库中。因此,必须手动地将本地的标签推送到远程仓库中。
git push origin 标签名称 : 将指定的标签上传到远程仓库
git push origin --tags : 将所有不在远程仓库中的标签上传到远程仓库
6 删除远程仓库的标签
$ git push origin :regs/tags/标签名称
$ git push origin --delete 标签名称
7、重命名tag
这个本质上是删除掉旧名字 tag ,然后再新建新名字 tag ,然后实现重命名的作用。
如果 tag 只存在本地,那么只需要删除本地的旧名字 tag ,然后新建新名字 tag:
git tag -d <oldTagName>
git tag <newTagName>
git push origin <newTagName> //推送到远程仓库
若已经推送到远程了,那么不仅要删除本地的,还要删除远程的,再重新创建和推送:
git tag -d <oldTagName>
git push origin :<oldTagName>
git tag <newTagName>
git push origin <newTagName> //推送到远程仓库
8、检出标签
检出标签的理解:我想在这个标签的基础上进行其他的开发。其实质就是以标签指定的版本为基础版本,新建一个分支,继续其他的操作。因此,就是新建分支的操作了。
$ git checkout -b 分支名称 标签名称