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来使用。欲知后事,下回分解。