git版本含义
git中版本的意思就是commit,每次commit就是一个版本,所以每次
git commit -m “some msg”
是必须的。这相当于给我们的版本命名了。
关键代码:
在各种git commit
之后,使用 git log
来进行查看自己版本状态,发现其中包含了很多自己的commit 信息,关键的是长长的hash码以及后面你写的msg(可以加上选项--pretty=oneline
,简化输出,退出按q即可)。
touch 1.file
git add --all
git commit -m “add 1”
touch 2.file
git add --all
git commit -m "add 2"
git log --pretty=oneline
输出结果:
efca973bf99228ac1f78d75d89f02a0d3bc0561e add 2
d59acbcf242f573dce99f7ad9af99c4e40e59718 add 1
d5193dc3564817a3d882d914e3e748f946380c5d dd
回滚的两种方式:
方法一:
git reset --hard HEAD^
一个^符号表示当前的上一个版本,两个就是上上个版本。。。
方法二:
git reset --hard id
id就是git log中得到的版本号就是那段长长的hash码,不用复制完,取前边几位就可以了。
补充:
选项的区别:
选项 | 作用 |
---|---|
-- hard | 直接改变当前文件中以及版本号的状态。真正的回滚回去 |
-- soft | 只是改变当前的版本号,没有改变当前的文件状态 |
--mix | 改变了head 以及 index 但是不改变当前的文件状态 |
简单的来讲,你自己修改了文件就是改变文件状态,输入Git add之后会改变当前项目的index,而Git commit 会改变head,Git push会拿你本地的head和远程的来比,那个版本高就听谁的,一样高又不一样就会有冲突。回滚顾名思义就是反操作而已,对着看就能看出规律来。
后悔药:
回滚回去之前的版本后,我后悔了,那么就可以用以下的操作:
git reflog
就可以看到之前的因回滚而消失的版本,通过此命令就可以查到相应的id号,就可以直接git reset --hard <id>
就可以回滚回去了。
有选择性的后悔药:
比如我不想回滚整个版本,只想回滚回之前版本的某一个文件,如下操作:
git checkout HEAD~1 <FILE NAME>
----END----