马上要和一些大佬一起做项目了,想起来git的东西有点忘得差不多了,遂来简单复习一下。说是火速上手,权当自己是小白罢辽。
基础知识
总所周知,git中有三个分区
- 工作区 (working directory)
- 暂存区 (stage index)
- 历史区 (history)
我们直接接触工作区,通过暂存区与历史区链连接。一般来说是下图这种单向的关系
当然有时候也可以通过reset将历史区的代码重置回工作区去。
初始化
git init
添加文件
git add xxx
xxx为文件名,当然也可以git add .
直接添加全部。
嘿!为啥不用
git add *
呢?因为
git add *
会忽略你的.gitignore
规则,直接把所有文件添加咯。但是git add .
会根据你的.gitignore
来添加对你真正有用的东西🤤
提交至历史区
git commit -m "好听的summary" xxx
xxx为暂存区中这次想要提交的文件,不填的话就默认全给你提交咯。
查看状态
git status
这个状态指的是工作区和暂存区状态。工作区没有改动时会提示你没有改动。
当修改了工作区的文件时,可以直接在这里看到有什么文件发生了改变。
但是这个时候会发现,modified: index.html
是红色的,看起来不是很舒服,跟个警报一样。往上一看,噢,Changes not staged for commit
,这是说修改了但还没提交至暂存区。提交一下试试。
变成了绿色,顺眼多了。那么再试试提交之后嘞?
悄悄地他走了,正如他悄悄地来。
小贴士: 可以使用 -s
参数显示简短信息
查看提交日志
git log
首先是git log
,这个从名字就透露出一股子日志气息的指令毫无疑问就是查看日志的指令了(搁这搁这呢?
git log
可以看到这个指令将每一次的提交的详细信息都展示出来了。第一行黄色的代表着那一次提交的哈希值,也是那一次提交的索引。下面三行都是一些基础信息辣。不过要是还觉得太复杂了咋办,不想显示这么多东西。没问题。
git log --pretty=oneline
历史大突破,全被压到一行里头去了,这次满意了吧。啥,还嫌长,行,再给你整个短点的。
git log --oneline
怎么说,这次总该满意了吧。
git reflog
这位更是重量级。
git reflog
多么精致,多么简洁的输出。他可以查看所有分支的所有操作记录包括commit和reset的操作,甚至包括已经被删除的commit记录。
其中HEAD是指当前版本的指向,上图所示我们就是在ba30e49
这个版本。
回滚
程序员儿的福音来了。当你不小心手抖搞出了些奇葩操作的时候咋整咧?回滚呗。回到上一个版本,就当无事发生。
细心的同学发现了,上一张图里我多了一个提交,标题是“删除了一个P标签”。这其实不是我删的,是我表弟删的,太熊了我这表弟。现在我想把我失去的代码找回来,咋整呢?哎对了,回滚到上一个版本。上一个版本号多少来着?看一下git reflog
,噢是a43793f
。那么输入指令
git reset --hard a43793f
现在我们的版本回到了a43793f
版本。看看我的p标签回来没。
好耶!现在再看看reflog
,可以看到第一行,我们的版本号又回到了a43793f
。
--hard, --soft, --mixed的区别
使用
--hard
的时候,历史区,暂存区和工作区会一起回滚,非常的强硬;而使用--mixed
时,是历史区和暂存区进行回滚;使用--soft
的时候,则只有历史区回滚了。一般来说我们都是使用
--hard
强制跳回(前往)某一版本。
DIFF
这个命令可以进行一个文本的比较。默认是工作区与暂存区的文件进行比较,例如
git diff
当有多个文件改动时,我们也可以指定某一个文件进行diff查看,在指令后面加上文件名字就好了。当然,diff还不止于此,它甚至可以比较历史区中两个不同分支,不同版本的区别。
结束
以上便是git在本地使用时的一些基础用法。下一次再来写一下多人协作时的常见操作。
我:我会了 脑&手:不,你不会
在会了在会了
学废了学废了
注定是我看不懂的东西
大佬谦虚了
话说大佬的头像加速真顶啊,点个赞~
服务器和CDN采用的级别比较高而已,哈哈
内心op:他好像真的想要教会我们
学!都给我学!
教学相长!
嘿嘿