目录
一、Git 工作流程
基本流程如下
- 克隆 Git 资源作为工作流程。
- 在克隆的资源上添加或修改文件。
- 多人修改时,可以更新资源
- 提交前查看历史修改记录
- 提交修改
- 提交完成后,后续发现错误,修改后再提交
二、Git 工作区、暂存区和版本库
基本概念
- 工作区:就是你在本地电脑能看到的目录。
- 暂存区:一般存放在 .git 目录下的 index 文件(.git / index)中,所有也被叫做索引。
- 版本库:工作区有一个隐藏目录 .git, 这个不算工作区,而是 Git 的版本库。
- 图中左侧为工作区,右侧为版本库,版本库中有区域暂存区,标记master的是master分支所代表的目录树。
- 图中的这个HEAD 实践是一个指向master分支的一个游标,图中出现head的地方可以用master替换。
-
图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。
-
当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
-
当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
-
当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
-
当执行 git rm --cached <file> 命令时,会直接从暂存区删除文件,工作区则不做出改变。
-
当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
-
当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
三、Git 的基本操作
本文章只介绍常见的 Git 的命令。
Git 完整命令手册地址: Git - Reference
创建仓库命令
命令 | 说明 |
git init | 初始化仓库。 |
git clone | 拷贝一份远程仓库,也就是下载一个项目。 |
提交与修改
命令 | 说明 |
git add | 从本地添加文件暂存区。 |
git status | 查看仓库当前状态,显示变更的文件。 |
git diff | 比较暂存区和工作区的差异。 |
git commit | 提交暂存区到本地仓库。 |
git reset | 回退版本(我用的比较少)。 |
git rm | 删除工作区文件。 |
git mv | 移动或重命名工作区文件。 |
提交日志
命令 | 说明 |
git log | 查看历史提交记录。 |
git blame <file> | 以列表形式查看指定文件的历史修改记录 |
远程操作
命令 | 说明 |
git remote | 远程仓库操作。 |
git fetch | 从远程获取代码库。 |
git pull | 下载远程代码并合并。 |
git push | 上传远程代码并合并。 |
四、Git 分支管理
使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。
作者理解:
在一个团队中,每个人负责的板块不同,所写的代码风格不同,实现的代码依赖不同,但是在master上,大家都功能都是相辅相成的,但是不能直接上传到master上(你不能把你的测试代码上传,有可能会引起其他功能出问题。)最好是每个人都在自己的分支上开发自己的功能实现,测试完毕后,在合并到master上。
命令 | 说明 |
git branch (branchname) | 创建分支 |
git checkout (branchname) | 切换分支命令 当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。 |
git merge | 合并分支命令 |
git branch | 列出分支 (-b)(branchname)立即切换到该分支下 (-d)(branchname)删除分支 |
git merge | 分支合并 |
(这个不太好给演示,等后续附加图片)
五、Git 查看提交历史
命令 | 说明 |
git log | 查看历史提交记录。 |
git blame <file> | 以列表形式查看指定文件的历史修改记录。 |
git log --author | 查找指定用户的提交日志可以使用命令 |
git log --since git log -- before | 例如:如果我要看 Git 项目中三周前且在四月十八日之后的所有提交 git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges |
也可以用 --oneline选项来查看简洁的历史记录版本。
还有 --graph选项,是拓扑图哦。
最后可以附加一个学习Git的的有趣网站,学会它就跟打游戏一样!觉得不错可以三连支持一波!Git 小游戏