对于git的教程在网上还是有许多不错的教程的,这里先附上一篇相对简单易懂的GIT入门指南,值得一提的是许多同学(没错正是在下)在追逐自己在游戏领域知识体系搭建的同时,忽略了git对于日常工作的重要性,这里记录一下常用到的git指令,为道友们在工作中提供一些便利。
本篇内容意在总结归纳,相关详细信息资料以及下载git可以去git官网查看。
设置git的两个基本信息,这个信息会在未来的提交代码的时候有用,能够让其他人员可以明白究竟是谁提交的代码。
#设置用户名和用户邮箱
git config --global user.name "siming1992"
git config --global user.email "siming1992@gmail.com"
设置git工厂
//将当前目录设置为git工厂,会在当前目录创建.git文件,之后才可使用git命令对该文件夹进行管理
//这个目录被成为git的工作区
git init
文件状态
查询文件状态,文件总共有四种状态Untracked / Unmodified / Modified / Staged(划重点了要考的)
git status //会清楚显示当前变动文件及文件状态
git status -s //简化版,看起来更清晰
将文件添加入暂存区(状态变更为Staged),从未执行过此命令的文件在执行该命令前为Untracked状态,尚未被git管理,已被管理的文件在更改后为modified状态
//从未执行过此命令的文件在执行该命令前为Untracked状态,尚未被git管理
git add a.txt //将a.txt添加给git,进入Stage状态,此时该文件还没有提交给git的工厂
git add . //将工作区中所有文件添加给git
将Staged文件提交给git的工厂(状态变更为Unmodified)
git commin -m "这里是提交信息,必填,请按照规范填写",进入Unmodified状态
删除已被管理文件(状态变更为Untracked,即不再受版本管理)
//将文件从版本库和本地删除
git rm a.txt
//将文件从版本库中删除,本地文件依然保留
git rm --cached a.txt
//将文件夹从版本库中删除,本地文件依然保留
git rm -r folder_path --cached
将Staged文件变更回Modified状态(即从暂存区中退回)
//将全部文件还原
git checkout .
//还原a.txt
git checkout a.txt
查询版本库中的文件
git ls-files
查询git日志, 会经常使用,会得到每次的提交信息(日志和日期),还有一串40位的hash值,作为此次提交的唯一标识,GIT中每个组件(组件的概念后面会讲)都是以hash的二进制方式来存储,这个组件的名称就是文件夹名称+文件夹中的文件的名称,这个hash码是唯一的(又划)
git log
使用reset命令对版本进行还原
//HEAD^^表示回到两个版本前,三个^表示回到三个版本前,HEAD~60可以回到60个版本前
git reset --hard HARD^^
//回退到某制定版本,log中与版本对应的哈希值
git reset --hard b7823a33c2534876a6afaf89923afcaf45cf1122
组件
这张图表现了commint,tree,和blob的关系,每一个组件都会存放在.git/objects文件夹下,当每次把文件设置为Staged
状态的时候,就会在objects中创建一个Blob组件,当我们进行commit之后,首先会创建一个commit组件,之后把所有的文件信息创建一个tree组件,然后把Stage Area中的blob组件封装在tree中完成一次提交。commit / tree / blob ,(划重点)
获取a.txt的hash值
git hash-object a.txt
获取组件信息
//获取0225b的commit组件信息,仅需打出前五位便可以获取到
git cat-file -p 0225b
今天先到这里吧,明天再把git分支和协同开发的相关内容补上😊