目录
Git之所以快速和高效,主要依赖它的两个特性:
传统的版本控制系统(例如SVN)是基于差异的版本控制,他们存储的是一组基本文件和每个文件随时间逐步累积的差异。
快照是在原有的文件版本的基础上重新生成一份新的文件,类似于备份。
缺点:占用磁盘空间较大
优点:版本切换时非常快,因为每个版本都是完整的文件快照,切换版本时直接恢复目标的快照即可。
特点:空间换时间。
Git的三个区域
分别为工作区、暂存区、Git仓库
Git的三种状态
已修改modified 已暂存staged 已提交committed
基本的Git工作流程
1、在工作区修改文件
2、将你想要下次提交的更改进行暂存
3、提交更新,找到暂存区的文件,将快照永久性存储到Git仓库
详情可以看我这篇笔记 http://t.csdn.cn/oyPkXhttp://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
具体操作见我这篇笔记:http://t.csdn.cn/zYYenhttp://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的格式规范如下:
例子:
- #忽略所有的.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>