git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理工作。
如何理解git是一个分布式版本控制系统
分布式
区别于集中式的版本控制系统典型的如SVN。分布式是指没有中央服务器,每个人的本地都有一份完整的项目文件。而集中式版本控制系统,有中央服务器,每个人从中央服务器获取一份项目文件,在本地开发,开发完成后提交给中央服务器。分布式版本控制系统的优点在于网络依赖小,只有在需要合并分支时才需要网络;本地文件存储采用元数据,体积小;分支操作互不影响。版本控制系统
版本控制是指在软件开发过程中各种代码、配置文件和说明文档等文件变更的管理。
Git工作区、暂存区和版本库
Git工作区通俗的讲就是除了隐藏文件夹.git以外的所有文件和文件夹。我们平时直接操作的文件就是存放在Git工作区的文件。
Git暂存区是指隐藏文件夹.git中的index文件。我们也可以把暂存区叫做索引
Git的版本库就是.git文件夹。
*理解Git的工作区、暂存区和版本库是理解git命令的关键*
Git的基本操作
创建仓库
创建仓库,通俗的讲就是生成一个隐藏文件夹.git。我们可以使用如下名命令:git init
从Git仓库中拷贝项目(类似svn中的捡出项目,这里的Git仓库一般是指GitHub上的仓库)
git clone <Git仓库的地址> <本地目录,可以省略>
例如:
git clone https://github.com/0Eternity0/0Eternity0.github.io.git f:/MyDir//
该句的意思是从该地址克隆一份项目文件到MyDir文件夹。如何不指定本地目录,就克隆到命令行工具运行的当前目录
将工作区的文件放到暂存区
git add hello.java fun.java
add后面可以跟上文件列表,也可以是文件夹如dir/。也可以跟上一个点 . 将工作区的所有文件全部加入暂存区
查看工作区的文件是否被添加到了暂存区
git status -s
比较工作区的文件和已经放到暂存区文件的差异
git diff
该命令后面还可以跟上各种参数,因为本文只是简要介绍。就不再赘述。实际操作中IDE中的图形化界面更加方便
将暂存区的文件放入版本库(此处指本地版本库)
git commit -m ‘本次提交的说明,如修复了某某bug’
删除添加到暂存区中的文件
git rm –cache 文件名或文件夹
删除工作区和暂存区中的文件
git rm -f 文件名或文件夹
Git分支管理
使用分支可以将人们从开发主线上分离开来。在不影响开发主线上继续工作。比如,你需要尝试开发一个不一定会上线的新功能时,你需要在开发主线之外的分支上工作,防止影响开发主线。
查询本地存在的分支
git branch
初始时有一个分支master,可以理解为开发主线
创建新的分支
git branch <新分支的名称,实际不需要括号>
值得注意的是,创建分支前至少进行了一次commit操作
切换分支
git checkout <分支名称>
从当前分支切换到指定分支。合并时也会合并修改,所以很容易产生冲突。一般可以手动修改来解决冲突
合并分支
git merge
将当前分支合并到master(开发主线)上去
删除分支
git branch -d <分支名>
删除指定分支。不能删除当前工作的分支。
Git其它操作
查看提交历史
git log
该命令后可以跟许多参数。
标签
git tag -a v1.0
为最新的提交打伤v1.0的标签。-a表示要参数要为该标签添加注解,git会自动打开编辑器让你填写注解。
Git一般还搭配远程仓库GitHub来使用。欲知后事,下回分解。