git
初始化
给某个文件夹初始化 git
1 | git init |
创建版本
给该文件夹下创建一个版本,需要该文件夹下的文件有所变化,因此创建一个文件在该文件夹下面,然后操作以下两步
1 | git add code.txt |
查看版本记录
1 | git log |
版本之间并不是记录了全部的文件内容信息,而是只记录目前版本相较上一个版本变化了那些。比如添加了一行代码,或者删除了一行注释。
如果版本多长显示不下,可以使用简介模式
1 | git log --pretty=oneline |
HEAD
HEAD表示当前最近的一个版本,上一个版本是 HEAD ^
或者 HEAD~1
。如果是上100个版本 则是 HEAD~100
版本回退
如果需要将当前版本回退到上一个版本,或者上两个版
1 | git reset --hard HEAD^ |
版本去向指定版本
如果想要从当前的版本去向曾经提交过的任何一个版本。
1 | git reset --hard 版本号 |
上例可以看出,在迁移版本的时候,git并没有删除任何一个版本,只是指针指向了不同的位置而已。
查看在git曾经操作的记录
1 | git reflog |
工作区和暂存区
工作区指的是,git当前工作的根目录位置,即是工作区。即 .git
文件所在的位置
版本库指的是git创建的 .git
文件夹,即是版本库
暂存区指的是版本库中的一个非常重要区域,用于暂存提交的文件修改,使用下面命令 git add
可以添加修改到暂存区
而 git commit
则是把暂存区中的所有修改,一次性的提交成一个版本记录。
在提交版本之前可以多次将修改提交到暂存区,最后一次性的提交成版本
查看当前工作区的状态
1 | git status |
撤销修改
- 当加入到暂存区的文件被再次修改后,如果想要提交保留修改则使用
git add
再次加入到暂存区,如果不想要修改了,则可以使用下面命令撤销修改。也就是相当于使用暂存区来覆盖工作区的修改。
1 | git checkout -- 文件名 |
- 如果上面修改的文件使用
git add
已经添加到了暂存区,但是此时仍然不想要此次提交了,则需要使用下面命令取消暂存
1 | git reset HEAD 文件名 |
再使用 git checkout
则可以将此次修改从工作区彻底删除掉
总结:想要撤销修改的几种case
- 修改了工作区的文件,没有提交暂存区,想直接丢弃
git checkout
- 修改了文件,也提交了暂存区,还是想丢弃 先
git reset HEAD
再git checkout
- 修改类文件,提交了暂存区,也提交了版本库,则可以使用
git reset --hard 版本号
直接回到指定的版本。
文件对比
- 对比修改了的工作区内容和最近版本HEAD内容有什么不同,使用:
1 | git diff HEAD -- 文件名 |
- 对比两个版本之间,某个文件的不同
1 | 对比HEAD版本和HEAD的上一个版本之间,某个文件(非根目录带地址)的不同 |
注:
如图所示,结果中的 --- +++
是按照diff后面的版本顺序来看
---
代表当前最新的HEAD
+++
代表HEAD^,即HEAD的上一个版本
文件内容中没有 - +
符号的,表示两个文件相同的地方,带有 - +
符号的表示两个文件不同的地方,其中带有 -
表示,该不同存在于HEAD 带有+
表示该不同存在于HEAD^(即HEAD上一个版本)
删除文件
删除文件,也是工作区文件的改修,操作方法和文件的修改是一样的
如果删除了工作区的文件,想要撤销删除。和工作区的文件被修改了,要撤销一样使用
git checkout -- 文件名
工作区的文件被删除,想将删除的操作添加到暂存区,以下语句均可
1 | git rm 文件名 |
提交删除到版本
1 | git commit -m '注释' |
如果你喜欢这个博客或者觉得它对你有用,欢迎你转发、分享这个博客,让更多的人参与进来。 如果博客中使用的图片侵犯了您的版权,请联系作者删除。 谢谢 !