总结图示
 
核心概念
- 工作区:即当前仓库目录下的所有文件所在的区域
- 暂存区:git add命令执行后,修改文件暂时所在的区域(等待后续git commit命令统一提交)
- 本地仓库:git commit命令执行后,提交文件所在的区域
- 远端仓库:与本地仓库关联;通过git push可将本地提交同步至远端。
核心操作流
Git的核心操作流为:git add \(\rightarrow\) git commit \(\rightarrow\)
git push,其中,
- git add将修改的文件加入到暂存区;
- git commit将暂存区的修改提交至本地仓库;
- git push将本地仓库的提交推送到远端仓库。
另外,记住在git add与git commit之前,记住执行
git pull,从远端拉取最新代码,并解决潜在的冲突。
不同区域的撤销操作
一条常规的修改提交操作流是 git add \(\rightarrow\) git commit \(\rightarrow\)
git push。但是如果在其中某一步,我们需要撤销相应的操作,该怎么办呢?Git提供了如下命令,在不同区域实现撤销操作:
- 对于已纳入Git管理的文件,如果要丢弃工作区中的修改,可使用:
- git restore <file>
- git checkout -- <file>
 
- 对于已经被git add命令加入暂存区的文件,可使用:- git restore --staged <file>将暂存区的相应文件放回工作区,并保持修改不改变
- git reset HEAD <file>(同上)
 
- 对于已经被 git commit命令提交至本地仓库,可使用:- git reset --soft <commit id>将提交头节点(HEAD)移动到指定commit id,并将修改保留在暂存区。
- git reset --mixed <commit id>将提交头节点(HEAD)移动到指定commit id,并将修改保留在工作区。
- git reset --hard <commit id>将提交头节点(HEAD)移动到指定commit id,不保留任何修改(如果修改包含新文件的提交,那么这个新文件将被删除。请慎用)。
 
- 对于已经被git push到远端仓库,没有相应的一条命令实现,但是可采用如下方法:- 首先,通过git reset命令将提交头节点移动到指定提交
- 再通过 git push -f强制更新远端
- 最后再修改本地仓库文件,进行 git add\(\rightarrow\)git commit\(\rightarrow\)git push操作。
 
- 首先,通过
参考
- git reset --soft,--hard的区别
- git restore指令和git restore --staged 的使用)
- Git撤销已经推送(push)至远端仓库的提交(commit)信息