一、什么是GIT?
-
是一个开源的分布式版本控制系统(是一个好用的版本)。
-
特点:项目越大越复杂,一起开发者越多,就越能体现GIT的高性能和高可用性。
二、GIT 的特性,它的主要特性有两个:
-
直接记录快照,而非差异比较:
-
记录快照的缺点:占用磁盘空间比较大;
-
记录快照的优点:版本切换速度快;
-
记录快照的特点:用空间来换时间。
-
-
基本上所有的操作都是在本地执行的。
三、GIT中的三个区域:
-
工作区(写代码的区域);
-
暂存区(临时存放的区域,等待被提交);
-
GIT仓库(最终的存放区域)。
五、GIT中的三种状态
-
已修改(modified)表示修改了文件,但还没有将修改的结果放到暂存区。
-
已暂存(staged)表示对已修改文件的当前版本做了标记,包含到下次提交的列表中。
-
已提交(committed)表示文件已经安全地保存在本地的仓库中。
注意:
-
工作区的文件被修改了,但还没有放到暂存区,就是已修改的状态。
-
如果文件已修改并放入暂存区,就是已暂存的状态。
-
如果将已暂存的文件提交,就属于已提交的状态。
基本的GIT工作流程有三步:
-
先在工作区中修改文件;
-
然后将你想要提交的放到暂存区;
-
最后提交,将快照永久性的保存到仓库中。
六、配置全局文件,配置一次,即可永久生效:
-
git config --global user.name "itheima"
-
git config --global user.email "itheima@itcast.cn"
七、查看全局配置信息
-
git config --list --global
八、查看某个全局配置项
-
git config user.name
-
git config user.email
九、获取帮助信息
-
第一种方法:git help config
-
第二种方法:git config -h
十、获取GIT仓库的两种方式:
-
将本地目录转换为GIT仓库;
-
从其它服务器中复制一个完全一样的。
十一、工作区中文件的4种状态:
其实在工作区中的有4种状态,但是这4种状态分成两在类:
第一类:未被 GIT 管理过:
-
也就是 未跟踪(Untracked):属于还没有被 GIT 管理过的文件;
第二类:已被 GIT 管理过:
-
未修改(Unmodified):工作区中文件的内容和仓库中的文件内容是一样的;
-
已修改(Modifide):工作区中文件和仓库中文件内容不一样,不论是增加还是删除了什么内容;
-
已暂存(Staged):工作区中被修改的文件已被放到暂存区,等待提交。
注意:GIT 操作的最终结果 :让工作区中的文件都处于 “未修改” 状态
十二、创建 GIT 文件:
-
git init
十三、查看文件状态:
-
第一种命令:git status (如果出现下面的情况,就表示这两个文件未跟踪)
-
第二种命令(精简的方式):git status -s (如果出现两个红色问号,就表示未跟踪)
-
第三种命令(精简的方式):git status --short
十四、跟踪新文件(也就是让新文件到已暂存状态)
-
跟踪单个文件的命令:git add 文件名 如:git add aa.txt
-
跟踪多个或单个文件的命令:git add . ( . 表示 文件目录下的所以有文件)
当跟踪后,再查看状态( git status )时,新文件会显示以下情况
十五、提交文件
-
第一种命令:git commit -m '这里对提交的内容进行描述(描述的内容不要随便写,方便后面查阅)'
-
第二种命令:git commit -a -m '这里对提交的内容进行描述'
-
第三种命令:git commit -am '这里对提交的内容进行描述'
注意:第二种和第三种跳过暂存区,直接提交到仓库区命令,但不能是新增的文件,要是未修改的文件或者已修改的文件才可以用这个命令,也就是说被 git 管理过。
当提交完文件后,再查看文件状态(git status)时,就会显示以下情况:
十六、对未修改文件进行修改后:(不管是添加内容还是删除内容)
-
红色的modifide 表示已修改
-
绿色的modifide 表示已暂存
十七、取消命令
-
取消对文件的修改用 git checkout 文件名
-
取消暂存的文件用 git reset HEAD 文件名
十八、移除文件有两种
-
第一种是从仓库和工作区中同时删除:git rm -f 文件名 (删除之后要提交下)
-
第二种只从仓库中删除了但是工作区还有这个文件:git rm --cached
十九、忽略文件
-
.gitignore (忽略文件要先提交到仓库后,现执行下一步)
-
注意:文件
.gitignore
的格式规范如下:① 以 # 开头的是注释
② 以 / 结尾的是目录
③ 以 / 开头防止递归
④ 以 ! 开头表示取反
⑤ 可以使用 glob 模式进行文件和文件夹的匹配(glob 指简化了的正则表达式)
-
星号 * 匹配零个或多个任意字符
-
[abc]
匹配任何一个列在方括号中的字符 (此案例匹配一个 a 或匹配一个 b 或匹配一个 c) -
问号 ? 只匹配一个任意字符
-
两个星号 ** 表示匹配任意中间目录(比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等)
-
在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)
-
二十、查看提交历史
-
第一种:git log (所有的历史都会出现,最近的出在最上面)
-
第二种:git log -2 (只展示最近的两条历史,这里的2可以更改为你想要的数字)
-
第三种:git log -2 --pretty=oneline (在一行上展示最近的两条历史)
-
第四种:git log -2 --pretty=format:"%h | %an | %ar | %s" (自定义格式展示在一行上最近的两条历史)
二十一、回退到指定的文件
-
git reset --hard 版本id 可以进行版本回退
-
git reflog 从哪个版本切换到哪个版本