Git02-版本控制
Git版本控制
git status : 查看仓库的当前状态
git diff : 查看具体的修改内容
所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。
而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。
git log : 显示从最近到最远的提交日志(添加--pretty=oneline参数可以输出简介版)
git reset --hard commit_id 通过commit_id(根据git log查询)来回溯版本
Head表示当前版本,Head^ 表示上一个版本,Head^^ 表示上上个版本,以此类推 (Head其实为指针)
git reset --hard Head^ 可以回溯至上个版本
git reflog 显示每一次历史命令(可以用于查询已回溯的版本commit,然后通过reset命令来撤销回溯)
git工作区(Working Directory),版本库(Repository),暂存区(Stage)和分支(如master分支):
- 工作区:电脑里的git项目文件夹
- 版本库:项目文件夹中的.git隐藏目录
- 暂存区:用git add添加文件,实际上就是把文件修改添加到暂存区
- 分支:用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支
git checkout -- filename : 把文件在工作区的修改全部撤销
git reset HEAD filename : 把暂存区的修改撤销掉(unstage),重新放回工作区
所以如果错误内容已经add到暂存区时,需要使用87两个命令完全撤销
如果错误内容已经commit到版本库,需要使用命令4来回溯版本
- git rm filename : 删除工作区的文件
如果误删,可以通过git checkout -- filename来把文件复原到最新版本
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。