Git02-版本控制

Git版本控制

  1. git status : 查看仓库的当前状态

  2. git diff : 查看具体的修改内容

所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。

而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

  1. git log : 显示从最近到最远的提交日志(添加--pretty=oneline参数可以输出简介版)

  2. git reset --hard commit_id 通过commit_id(根据git log查询)来回溯版本

Head表示当前版本,Head^ 表示上一个版本,Head^^ 表示上上个版本,以此类推 (Head其实为指针)

git reset --hard Head^ 可以回溯至上个版本

  1. git reflog 显示每一次历史命令(可以用于查询已回溯的版本commit,然后通过reset命令来撤销回溯)

  2. git工作区(Working Directory),版本库(Repository),暂存区(Stage)和分支(如master分支):

  • 工作区:电脑里的git项目文件夹
  • 版本库:项目文件夹中的.git隐藏目录
  • 暂存区:用git add添加文件,实际上就是把文件修改添加到暂存区
  • 分支:用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支

工作区与版本库的交互

  1. git checkout -- filename : 把文件在工作区的修改全部撤销

  2. git reset HEAD filename : 把暂存区的修改撤销掉(unstage),重新放回工作区

所以如果错误内容已经add到暂存区时,需要使用87两个命令完全撤销

如果错误内容已经commit到版本库,需要使用命令4来回溯版本

  1. git rm filename : 删除工作区的文件

如果误删,可以通过git checkout -- filename来把文件复原到最新版本

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”