Git库在本地有三部分组成:工作区,索引区(临时的存储区域),仓库。用户新增、修改等过程都是在工作区 ,用户通过 add 命令增加的文件都会在索引区中,用户通过 commit 命令提交的文件都会在 仓库 中。
工作区恢复
有时候需要对当前工作区的改动恢复到未改动的状态,那么:
git checkout -- <filename>
撤销已提交至索引区的文件
对文件 a.py 程序做了改动,执行:
git add a.py
发现 a.py 仍存在bug,需撤销提交至索引区:
git reset HEAD a.py
版本回退
如果对a.py的文件已经commit 了,而此刻需要上一个版本,或者上几个版本的文件,那么:
git reflog
af8d38c HEAD@{1}: commit: 通用转移数据脚本
17ab7ea HEAD@{2}: commit: 提交造数据脚本的配置脚本
ad548ee HEAD@{3}: commit: 适用于mysqldb的造数据脚本
git reset --hard 17ab7ea # 17ab7ea 是 commit_id, 命令git reflog 返回的第一列
HEAD is now at 17ab7ea 提交造数据脚本的配置脚本
操作分支
查看当前分支(带*号的表示当前分支)
$ git branch
* dev
master
创建分支 dev2
$ git branch dev2
切换分支到 dev2
$ git checkout dev2
创建dev并切换分支为dev
$ git checkout -b dev
删除分支dev2
合并分支dev2到当前分支
$ git merge dev2
合并分支dev2到当前分支(强制禁用Fast forward模式——当分支被删除后,分支的信息可以被找到,若不禁用,则无法被找到)
$ git merge --no-ff -m "merge with no-ff" dev2
删除未被合并过的分支 dev3
$ git branch -D dev3
保存当前工作区
开发新功能时,发现上一版本的bug,那么需要保存当前工作区
git stash
而后在上一版本切分支,修复缺陷完事后,恢复当前工作区
git stash pop #
上述 git stash pop 也可以用一下命令代替:
git stash apply # 此时用 $ git stash list命令查看,工作区是有东西的
git stash drop # 此时用 $ git stash list命令查看,工作区是空的