仓库:
    1.remote:远程主仓库;
    2.repository:本地仓库;
    3.index:git追踪树,暂存区;
    4.workspace:本地工作区(即你编辑器的代码)

    git add提交到暂存区,出错怎么办
    一般代码提交流程为:工作区->git status 查看状态->git add.将所有修改加入暂存区->git commit -m”提交描述”将代码提交到本地仓库-> git push 将本地仓库代码更新到远程仓库
    场景1:工作区
    当你改乱工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout — file。
    // 丢弃工作区的修改
    git checkout — <文件名>
    场景2:暂存区
    当你不但改乱了工作区某个文件的内容,还git add添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按照场景1操作。
    git reset HEAD <文件名> // 把暂存区的修改撤销掉(unstage),重新放回工作区。

    git commit 提交到本地仓库,出错怎么办?
    1.提交信息出错
    更改commit 信息
    git commit —amend -m “新提交信息”
    2.漏提交
    commit 时,遗漏提交部分更新,有两种解决方案:
    方案一:再次commit
    git commit -m “提交消息”
    方案二:遗漏文件提交到之前commit上
    git add missed-file // missed-file 为遗漏提交文件
    git commit —amend —no-edit

    —no-edit 表示提交消息不会更改,在 git上仅为一次提交
    3.提交错误文件,回退到上一个commit版本,再commit
    git reset
    删除指定的commit
    // 修改版本库,保留暂存区,保留工作区
    // 将版本库软回退1个版本,软回退表示将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到暂存区。
    git reset —soft Head~1
    // 修改版本库,修改暂存区,修改工作区
    // 将版本库回退1个版本,不仅仅是将本地版本库的头指针全部重置 到指定版本,也会重置暂存区,并且会将工作区代码也回退到这个版本
    git reset —hard head~1
    // git版本回退,回退到指定的commit_id版本,可以通过git log查看提交历史,以确定要回退到哪个版本(commit之后的即为id);
    git reset —hard commit_ID

    git revert
    撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
    作为一次最新的提交
    // 撤销前一次commit
    git revert HEAD
    // 撤销前前一次 commit
    git revert HEAD^
    // (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
    git revert commit

    git revert 是提交一个新的版本,将需要revert的版本的内容在反向修改回去,版本会递增,不影响之前提交的内容

    git revert 和git reset的区别
    git revert 是用一次新的commit来回滚之前的commit,git reset 是直接删除指定的commit。
    在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert 使用一次逆向的commit“中和”之前的提交,因此日后合并的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除。因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
    git reset 是把HEAD向后移动了一下,而git resert 是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。