目录

Git的两个特性 

Git的记录快照

Git的工作流程 

 Git的安装及配置

Git的基本操作

获取Git仓库的两种方式

 将尚未进行版本控制的本地目录转换为Git仓库

跟踪新文件

提交更新

对已提交的文件进行修改

暂存已修改的文件

提交已暂存的文件

撤销对文件的修改

向暂存区中一次性添加多个文件

取消暂存的文件

跳过使用暂存区域

移除文件

忽略文件

查看提交历史

回退到指定的版本

Git的两个特性 

Git之所以快速和高效,主要依赖它的两个特性:

  1. 直接记录快照,而非差异比较
  2. 近乎所有操作都是本地执行

传统的版本控制系统(例如SVN)是基于差异的版本控制,他们存储的是一组基本文件每个文件随时间逐步累积的差异

Git的记录快照

快照是在原有的文件版本的基础上重新生成一份新的文件,类似于备份

缺点:占用磁盘空间较大

优点:版本切换时非常快,因为每个版本都是完整的文件快照,切换版本时直接恢复目标的快照即可。

特点:空间换时间。 

Git的工作流程 

Git的三个区域

分别为工作区、暂存区、Git仓库 

Git的三种状态

已修改modified      已暂存staged       已提交committed

基本的Git工作流程

1、在工作区修改文件

2、将你想要下次提交的更改进行暂存

3、提交更新,找到暂存区的文件,将快照永久性存储到Git仓库

 Git的安装及配置

 详情可以看我这篇笔记   http://t.csdn.cn/oyPkXicon-default.png?t=M5H6http://t.csdn.cn/oyPkX检查配置信息

#查看所有的全局配置项
git config --list --global

#查看指定的全局配置项
git config user.name
git config user.email

 获取帮助信息

可以使用git help<verb> 命令 无需联网即可在浏览器中打开帮助手册,例如:

#想要打开git config命令的帮助手册
git help config

#想要获取git config命令的快速参考
git config -h

Git的基本操作

获取Git仓库的两种方式

  1. 将尚未进行版本控制的本地目录转换为Git仓库
  2. 从其他服务器克隆一个已存在的Git仓库

 将尚未进行版本控制的本地目录转换为Git仓库

 具体操作见我这篇笔记:http://t.csdn.cn/zYYenicon-default.png?t=M5H6http://t.csdn.cn/zYYen

 检查文件的状态 

 工作区中文件的4种状态

 可以使用git status命令查看文件处于什么状态

举例:

状态报告中新建的index.html文件出现Untracked files(未跟踪文件)下面。

未跟踪文件意味着Git在之前的快照(提交)中没有这些文件。Git不会自动将之纳入跟踪范围,除非明确地告诉它:“我需要使用Git跟踪管理该文件”

以精简的方式显示文件状态:加上-s就会显示比较简洁的方式。git status -s

跟踪新文件

使用命令git add开始跟踪一个文件。

git add index.html

跟踪后可以用git status -s来检查文件当前的状态

提交更新

执行git commit命令进行提交,其中-m后面是本次的提交信息,用来对提交的内容进行做进一步的描述。

git commit -m "新建了index.html文件"

对已提交的文件进行修改

当文件已经被Git跟踪,并且工作区和Git仓库的index.html文件内容保持一致。当修改了index.html文件的内容后,

 查看状态,出现M,说明已跟踪的文件的内容发生了变化但是还没有放到暂存区

暂存已修改的文件

目前index.html已经修改,如果要暂存这次修改,需要再次运行git add命令

提交已暂存的文件

再次运行git commit -m "提交信息" 

撤销对文件的修改

把对工作区中对应文件的修改,还原成Git仓库中所保存的版本。

git checkout -- index.html

操作的结果:所有的修改会丢失,且无法恢复。危险性较高,谨慎操作。

 撤销操作的本质:用Git仓库中保存的文件,覆盖工作区中指定的文件。

向暂存区中一次性添加多个文件

 git add .

取消暂存的文件

git reset HEAD 要移除的文件名称

跳过使用暂存区域

Git标准的工作流程:工作区->暂存区->Git仓库,这样较为繁琐,简化为 工作区->Git仓库

git commit -a -m "描述信息"

移除文件

两种方式

#从Git仓库和工作区同时移除index.js文件
git rm -f index.js

#只从Git仓库中移除index.css,但保留工作区的index.css文件
git rm --cached index.css

忽略文件

一般总有一些文件无需纳入Git管理,也不希望它们总出现在未跟踪文件列表。在这种情况下,我们可以创建一个名为.gitignore的配置文件,列出要忽略的文件的匹配模式。

文件.gitignore的格式规范如下:

  • #开头的是注释
  • /结尾的是目录
  • /开头防止递归
  • !开头表示取反
  • 可以使用glob模式进行文件和文件夹的匹配(glob指简化的正则表达式)

 例子:

#忽略所有的.a文件
*.a

#但跟踪所有的lib.a,即便你在前面忽略了 .a文件
!lib.a

#只忽略当前目录下的TODO文件,而不忽略 subdir/TODO
/TODO

#忽略任何目录下名为bulid的文件夹
build/

#忽略doc/notes.txt,但不忽略doc/serve/arch.txt
doc/*.txt

#忽略 doc/ 目录及其所有子目录下的.pdf文件
doc/**/*.pdf


查看提交历史

#按时间先后顺序列出所有的提交历史,最近的提交排在最上面
git log

#只展示最新的两条提交历史,数字可以按需进行填写
git log -2

#在一行上展示最近两条提交历史的信息
git log -2 --pretty=oneline

#在一行上展示最近两条提交历史的信息,并自定义输出的格式
# %h 提交的简写哈希值  %an作者名字 %ar作者修订日期,按多久以前的方式显示  %s提交说明
git log -2 --pretty=format:"%h | %an | %ar | %s"

回退到指定的版本

#在一行上展示所有的提交历史
git log --pretty=online

#使用git reset --hard 命令,根据指定的提交ID回退到指定版本
git reset --hard <CommitID>

#在旧版本中使用git reflog --pretty=online 命令,查看命令操作的历史
git reflog --pretty=oneline

#再次根据最新的提交ID,跳转到最新的版本
git reset --hard <CommitID>

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐