Git(一)本地操作

1.Git与SVN的差异

SVN是集中式版本控制系统

只有中央服务器上有版本控制数据库,其他电脑需要从服务器上CheckOut,做操作的时候需要和中央服务器做交互

Git是分布式版本控制系统

每台电脑上本地都有一个版本的Database,速度快,不需要网络交互,也有一台中央服务器,仅仅用于其他成员之间的协作


SVN存储的是与上一个版本之间的差异,我们检出每一版本代码的时候,都需要叠加这些差异

Git版本存储的是当前版本的所有内容,不需要和其他版本进行差异比较之后,进行文件合成,这体现了Git的效率

2.Git的安装及配置

下载相应操作系统的Git版本进行安装

配置Git自动完成 https://github.com/git/git

配置Git基本配置,用于显示这个文件修改之后,提交的作者信息谁


Git配置三个级别及级别排序

git config --system(当前系统)<git config --global(当前用户)<git config --local(当前仓库)

Git文档的查看方式

git config --help/git help config/man git -config

3.Git的基本工作流程

Git用40个16进制字符的Hash唯一标识一个对象

Git四种对象

blob(文本文件、二进制文件、链接文件)

tree(目录)

commit(历史提交)

tag(指向一个固定的历史提交)

tag指向commit指向tree对象,而tree又包含其他tree对象和blob对象

commit指向的树形结构,就代表提交时候工作区的某个状态,

对这些对象的内容,进行SHA-1 Hash之后,可以得到他们的唯一标识,

Git只关心文件的内容,如果有两个文件有相同的内容,会指向同一个blob对象,像文件名其他信息会存储在tree对象中

存储Git对象的仓库

获取仓库的办法

git init/git clone

仓库的种类

裸仓库:(不带工作区)bare/no-bare

git三个区域

working directory(工作区,日常编辑代码的地方,维护一个树形结构)

staging area(暂存区,存储一个状态,存储的代提交的内容)

history repository(历史仓库,是commit指向的一个结构)

working directory state files  staging area  commit  history repository

history repository   check out project  working directory

Git命令

git add

git commit

git status

git rm(从暂存区删除命令)

git mv(工作区重命名或移动文件,再添加到暂存区)

gitignore(忽略一个工作区的内容,不希望添加到暂存区和历史区)

4.Git暂存区

维护了一个虚拟的树结构,代表了下一次需要提交的内容的整体

git add(working directory->staging area .git目录生成响应的index,每条索引有一个40位的16进制SHA-1 Hash以及对应的文件名,状态,时间戳)

git  commit(staging area->git对象库,生成一个commit对象指向顶层对象,master分支指向commit对象)

git rm(删除工作区和暂存区的文件)

git cache rm(只删除暂存区的文件)

git rm(工作区文件重命名,索引区,删除原来的索引,新增一个,文件内容不变,指向同一个对象,

暂存区索引每次更新的时候,暂存区都会重新计算所需要生成的tree对象,等到提交的时候,可以重新生成这些tree对象,提升git的效率)

5.Git本地分支与合并

不同的分支之间,做独立的各自的工作,无缝的来回进行切换

使用stash保存分支中的内容,切换回来的时候,还原回工作区和暂存区

合并

fast-farword merge test是master的衍生分支,master回直接指向test的分支

non-fast-farword merge test和master,会合并成一个共有的分支

6.查看与对比历史记录

git show 查看git 对象

git log 查看git历史

git diff 查看历史差异

7.插销修改

git  checkout 还原工作区,用暂存区的内容覆盖工作区的内容

git reset 还原暂存区,从历史提交里面还原暂存区

git clean 清除还没有添加到暂存区的文件

git revert 产生一个新的提交覆盖之前的提交,产生修改,还原工作区里面的内容

8.重写历史记录

git  commit --amend 产生一个新的提交,用来替换掉当前所指向的提交

git rebase

git reset

git reflog

猜你喜欢

转载自blog.csdn.net/qidiantianxia/article/details/80853094