一、git版本库
Git版本库只是一个简单的数据库,其中包含所有用来维护与管理项目的修订版本和历史的信息。在Git中,跟大多数版本控制系统一样,一个版本库维护着项目整个生命周期的完整副本。然而,不同于其他大多数VCS,Git版本库不仅仅提供版本库中所有文件的完整副本,还提供版本库本身的副本。
Git维护着两个主要的数据结构:对象库和索引。所有的这些版本库数据存放在工作目录跟目录下一个名为.git的隐藏子目录中。
对象库在复制操作的时候能进行有效复制,这也是用来支持完全分布式VCS的一种技术。索引是暂存的信息,对版本库来说是私有的,并且可以在需要的时候按需求进行创建和修改。
二、Git对象类型
对象库是Git版本库实现的心脏。它包含你的原始数据文件和所有日志消息、坐着信息、日期,以及其他用来重建项目人意版本或分支的信息。
Git放在对象库里的对象有四种类型:块(blob)、目录树(tree)、提交(commit)和标签(tag)。这四种原子对象构成Git高层数据结构的基础。
-
块(blob)
文件的每一个版本表示为一个块(blob)。blob是“二进制大对象”的缩写,是计算机领域的常用术语,用来指代某些可以包含任务数据的变量或文件,同时其内部结构会被程序忽略。一个blob被视为一个黑盒。一个blob保持一个文件的数据,但不包含恩和关于这个文件的元数据,甚至连文件名也没有。 -
目录树(tree)
一个目录树(tree)对象代表一层目录信息。它记录blob标识符、路径名和在一个目录里所有文件的一些元数据。它可以地柜引用其他目录树或子树对象,从而建立一个包含文件和子目录的完整层次结构。
git目录树.png
-
提交(commit)
一个commit对象保存版本库中每一次变化的元数据,包括作者、提交者、提交日志和日志消息。每一个提交对象指向一个目录树对象。 -
标签(tag)
一个标签对象分配一个任意的且可读的名字给一个特定对象,通常是一个提交对象通。通常情况下,tag代表每个项目上线的稳定版本,代码一般不会出现改动。
三、git常用命令
1、基本命令
git init :初始化一个Git仓库
git clone <项目地址>:从远程仓库copy一个git版本库到本地
git add <file>:将文件添加到版本库中
git add . :将根目录下所有的文件添加进版本库中
git status:查看暂存区(索引)中文件的状态
git commit -m "message":将文件由暂存区添加到工作区中,也可以说添加进当前的分支中
git log:查看提交的日志信息
git rm <file>:删除文件
git checkout HEAD -- <file>:用于恢复git rm删除的文件
- 2、更改提交命令
git reset :用于版本回退
git reset --soft HEAD^ :会将HEAD引用指向给定提交。索引和工作区目录的内容保持不变
git reset --mix HEAD^ :会将HEAD指向给定提交。索引内容也跟着改变以符合给定提交的结构,但是工作目录中的内容保持不变。这个版本的命令会将索引变成你刚刚暂存该提交全部变化时的状态。
git reset --hard HEAD^:会将HEAD指向给定提交,索引的内容和工作区的当前修改将会消失,新文件也将删除。如果当前commit可以丢掉,那么可以用--hard来实现。
- git cherry-pick 命令
git cherry-pick <commitId>:一般用于把一个分支中的commit,引入到另外一个分支中。实际开发中如果刚开发一个新功能,刚好其它分支中也需要该功能, 那么可以使用git cherry -pick commitId 把功能添加到另外一个分支中。
- git revert
git revert <commitId>:回退到特定的commit版本
-
3、缓存暂存区
git stash save "message" :把代码保存到stash区
git stash list:查看stash区列表
git stash pop:把stash区的stash@{0}代码合并到暂存区,并把该stash清空
git stash apply stash@{0} :和 git pop有点类似,只不过它不会清空该stash
4、操作分支的相关命令
git branch:查看分支
git branch <branch>
git fetch:把远程分支更新到本地
git checkout -b <branch>:切换到dev分支
git merge <branch>:把dev的代码合并到当前分支
git branch -d <branch>: 删除分支
网友评论