为什么要学习Git?
无论是单人开发还是多人开发,都必须要设计版本管理.
我们今天开发到了A版本,但是第二天我们已经把A改的面目全非了,这时候出了错,或者改了需求,我们想要退回A版本怎么办?
在A做好的时候就把A版本存起来,后面有问题直接回滚成版本A.
Git的作用还不止于此,还用于多人协作.
D://repo1被称为工作区(除了.git的部分)
D://repo1//.git被称为版本库(repository)
版本库里面又有stage(暂存区)和branch(分支)
共享代码和合并代码的时候,就需要一个远程仓库
分支
所谓分支,说白了就是一条时间线,每次git commit形成一个个版本,一个个版本一次存储在分支的一个个提交点上.
一个branch分支就是一条时间线
不建议一直都在master主分支上提交,我们把它保护的很好,只有很重要的commit到master分支中
我们新建一个开发分支,确定稳定以后,才移植到master分支上,也就是说,master上所有版本都是相对稳定的.
如何创建分支呢?
git branch dev
创建了一个叫dev的分支
*表示你现在在使用的是master分支
如何切换到dev分支呢?
git checkout dev
哪一个分支都有一个指针,指向最新的版本.
当你新建一个分支的时候,实际上是先新建了一个指针.
分支之所以叫分支,是因为当你新建这个分支的瞬间,这个分支包含了前面分支的所有提交点.真的是分支的概念
分支的合并
Git的工作流程
我们来看Git的工作流程:
一般工作流程如下:
1.克隆Git资源作为工作目录
2.在克隆的资源上添加或者修改文件
3.如果其他人修改了,你可以更新资源
4.在提交前查看修改
5.提交修改
6.在修改完成后,如果发现错误,可以撤回提交并且再次修改并提交
基本概念
我们先来理解一下Git工作区,暂存区,版本库的概念:
工作区:就是在你的电脑里面能看到的目录
暂存区:英文叫stage或index,一般存放在.git目录下的index文件(.git/index)中,所以我们把暂存区优势也叫做索引(index)
版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库
下面这个图展示了工作区\版本库中的暂存区和版本库之间的关系
Git基本操作
Git的工作就是创建和保存你项目的快好以及与之后的快照进行对比.
Git常用的是如下6个命令:git clone, git push, git add,git commit,git checkout, git pull后面会详细介绍
在这里插入图片描述
workspace:工作区
staging area:暂存区/缓存区
local repository:本地仓库
remote repository:远程仓库
实际开发中Git的使用
项目经理开始的时候在IDEA中新建一个开发的项目,然后新建一个.gitignore文件,告诉每个local的Git在add,commit,push的时候要忽略哪些文件.项目经理然后创建一些包,做一些简单的初始内容.一般来说,都是空的.然后做一次提交,作为初始化,这样本地仓库就建好了.然后项目经理会建好所有的分支,然后把本地项目push传到远程(组内的Git服务器)私有仓库.注意要把所有branch都push了.然后将开发组员拉入到这个私有仓库的开发人员列表中.
然后在远程这儿要做一个主分支的保护,把它状态定义成保护分支,这样只有管理员(项目经理)可以向master分支push成熟稳定的版本.
然后开发程序员克隆仓库,更新,写代码,push.
开发人员怎么做呢?
1.先clone远程库,获得项目.建立本地仓库.
2.在本地上commit,然后push到远程
3.需要更新项目内容的时候,通过pull从远程仓库拉取内容
4.每次在push内容到远程之前,都要先pull一把!把远程最新内容合并到本地,合适本地内容和远程内容是否有冲突!
程序员要保证一定在本地合并!!!这样有冲突了好解决!解决冲突以后push到远程!(在push之前,先pull!!!)
一个简单操作
$ git init
$ git add
$ git commit
git init 初始化仓库
git add 添加文件到暂存区
git commit 将暂存区内容添加到仓库中
创建仓库命令
下表列出了git创建仓库的命令:
git init 初始化仓库
git clone拷贝一份远程仓库,也就是下载一个项目
提交与修改
Git的工作就是创建和保存以你项目的快照与之后的快照进行对比:
下表列出了有关创建与提交你的项目的快照的命令:
git add:添加文件到仓库
git status:查看仓库当前的状态,显示有变更的文件
git diff: 比较文件的不同,也就是暂存区和工作区的差异
git commit :提交暂存区到本地仓库
git reset:回退版本
git rm:删除工作区文件
git mv:删除工作区文件
提交日志
git log:查看历史提交记录
git blame<file> 以列表形式查看指定文件的历史修改记录
远程操作
git remote 远程仓库操作
git fetch 从远程获取代码库
git pull 下载远程代码并合并
git push 上传远程代码并合并
Git分支管理
几乎每一版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.
有人把Git的分支模型称为必杀技特性,而正是因为它,将Git从版本控制系统家族里区分出来
创建分支命令:
git branch(branchname)
切换分支命令
git checkout(branchname)
当你切换分支的时候,Git会用该分支的最后提交的快照替换你的工作目录的内容,所以多个分支不需要多个目录
合并分支的命令:
git merge
你可以多次合并到统一分支,也可以选择在合并之后直接删除被并入的分支
开始前我们先创建一个测试目录: