使用 Git 前,需要先了解工作区、暂存区、版本库的概念:
工作区所做的事情,在 add
后会保留在暂存区(stage),当 commit
后会把暂存区的内容往提交到 master 分支。
可以这样理解:工作区就是一个超市,暂存区就是购物车,版本库内的 master 就是结账的地方,每次结账完,购物车也就清空一次。
1、初始化版本库
在本地创建一个文件夹作为你的工作区,在目录下执行:
$ git init
然后就会多一个.git
的文件夹,这是个版本库,不要手贱删除。
2、添加文件到暂存区
$ git add readme.txt // 添加readme.txt到git
$ git add . // 把所有未提交的文件,添加到git
3、提交暂存区内容
如果你通过 git add 了一个文件,需要 cmomit 一下才真正记录在 git 版本库里。
$ git commit -m "这里是注释,写你修改了什么"
4、查看本地修改与上一版本的差异
$ git status
5、查看历史版本
$ git log
显示 commit id 方式查看历史版本:
$ git log --pretty=oneline
6、版本回退
一般先用 git log 查看历史,以便确定要回退到哪个版本。通过注释,能看到每个版本做了什么修改,这就是写注释的好处,当确定需要退回的版本后,再使用如下命令退回到指定版本:
$ git reset --hard 240561d
如果想直接退回到上一版本,有快捷方式:
$ git reset --hard HEAD^
HEAD 表示当前版本,HEAD^ 表示上一个版本,HEAD^^ 表示上上一个版本,如此类推,然后 HEAD~100,表示上 100 个版本。
如果返回过头了怎么办?只要上面的命令行窗口还没有被关掉,可根据 commit 那串号指定版本,版本号不用写全,git 会自动去找的,如:
$ git reset --hard 800b704
那么说命令窗口关闭了,版本号我咋知道啊?git 还有一个方法,查看命令历史:
$ git reflog
这也就能看到所有的 commit id。
7、撤销修改
a. 撤销工作区的操作:
$ git checkout -- 文件如:readme.txt
b. 如果已经到了暂存区,需要分两步操作,先让操作回退到工作区再进行撤销,可以把暂存区的修改撤销掉,重新放回工作区。
$ git reset HEAD file
然后再执行:
$ git checkout -- file
8、删除文件
把 file 从工作区和版本库一起删除
$ git rm file
且:
$ git commit -m "删除了什么"
删错文件有 3 类还原方法:
a. 在工作区删除了可以直接 checkout 撤销
git checkout -- file
b. 已经 git rm 了,那还在暂存区可以回退一下到工作区
$ git reset HEAD file
然后撤销工作区操作
git checkout -- file
c. 已经 git rm 并且已经 commit 了,那就已经印到版本库上了,那要恢复的话只能回到上一个版本了,即 $ git reset --hard HEAD^
。
其他技巧:
1、git bash 复制快捷键为:Ctrl + Insert,粘贴快捷键为:Shift + Insert。
2、不要使用记事本来编辑,很容易造成编码错误。