1、版本回退
每当文件修改到一定程度时,可以保存一个快照,在Git中被称为commit。一旦把文件改乱了,或误删了文件,可以从最近的一个commit恢复,然后继续工作,避免工作成果全部丢失。
查看提交历史,以便确定要回退到哪个版本:
git log
加上--pretty=oneline参数可以简化输出格式,输出到一行:
git log --pretty=oneline
git log输出的一大串40位数是commit id(版本号),是一个SHA1计算出来的一个非常大的数字,用十六进制表示。
在Git中,HEAD表示当前版本,上一个版本是HEAD^,上上一个版本是HEAD^^,上n个版是HEAD~n。
回退到历史某个版本:
git reset --hard HEAD^
git reset --hard cb926e7
注意:cb926e7是commit id的前7位
命令历史,以便确定要回到未来的哪个版本:
git reflog
回到未来某个版本:
git reset --hard ea34578
2、工作区和暂存区
工作区:本地电脑里存放文件的目录。
Git的版本库:工作区的隐藏目录.git。
暂存区:版本库中的stage。
把文件添加到Git仓库,即文件改动先放到暂存区,然后一次性提交暂存区的所有改动。分两步执行:
① git add把文件添加到暂存区;
② git commit把暂存区的所有内容提交到当前分支。创建Git版本库时,Git自动创建第一个master分支,git commit往master分支上提交改动。
注意:Git管理的是改动,git add命令将在工作区的改动放入暂存区,准备提交,由于git commit只负责把暂存区的改动提交,因此,若某次改动没有通过git add命令放入暂存区,那么git commit不会提交该次修改。
3、撤销修改:
丢弃工作区的改动(让文件回到最近一次git commit或git add时的状态):
git checkout -- myCode.txt
两种情况:
① 文件改动后还没有被放到暂存区,撤销修改后文件回到和版本库一模一样的状态;
② 文件改动后已经添加到暂存区,撤销修改后回到添加到暂存区后的状态。
注意:--不能省略,没有--,表示切换到另一个分支。
命令git reset HEAD myCode.txt可以撤销暂存区的修改,重新放回工作区。
也即,git reset命令既可以回退版本,也可以撤销暂存区的修改回退到工作区。
4、删除文件
工作区删除文件:
rm myCode.txt
工作区删除文件后,有两个选择:
① 从版本库中删除该文件
git rm myCode.txt
git commit -m "remove myCode.txt"
② 把误删的文件恢复到最新版本
git checkout -- myCode.txt