Git的4个区和5种状态
五种状态间的顺序操作
四个区
工作区(Working Area)
暂存区(Stage)
本地仓库(Local Repository)
远程仓库(Remote Repository)
五种状态
未修改(Origin)
已修改(Modified)&未追踪(Untracked)
已暂存(Staged)
已提交(Committed)
已推送(Pushed)
顺序操作
第零步:工作区与仓库保持一致
第一步:文件增删改,变为已修改状态
第二步:git add
,变为已暂存状态
1 | $ git add --all # 当前项目下的所有更改 |
第三步:git commit,变为已提交状态
1 | $ git commit -m "<这里写commit的描述>" |
第四步:git push
,变为已推送状态
1 | $ git push -u origin master # 第一次需要关联上 |
五种状态间的撤销操作
已修改,但未暂存
1 | $ git diff # 列出所有的修改 |
已暂存,未提交
这个时候已经执行过git add
,但未执行git commit
,但是用git diff
已经看不到任何修改。
因为git diff
检查的是工作区与暂存区之间的差异。
1 | $ git diff --cached # 这个命令显示暂存区和本地仓库的差异 |
已提交,未推送
执行完commit之后,会在仓库中生成一个版本号(hash值),标志这次提交。之后任何时候,都可以借助这个hash值回退到这次提交。
1 | $ git diff <branch-name1> <branch-name2> # 比较2个分支之间的差异 |
已推送到远程
1 | $ git push -f orgin master # 强制覆盖远程分支 |
慎用,一般情况下,本地分支比远程要新,所以可以直接推送到远程,但有时推送到远程后发现有问题,进行了版本回退,旧版本或者分叉版本推送到远程,需要添加 -f参数,表示强制覆盖。
总结
首先,先用git status
查看下当前状态。git reset
可以作用于本地仓库,用于回退/前进到任意版本,也可以作用于暂存区,用于撤销暂存区修改。有hard和soft两个参数。soft参数可以省略,soft参数表示撤销的修改仍放在工作区中。git checkout
用于撤销删除和修改,git clean -df
用于撤销新增。git diff
可以查看工作区、暂存区、仓库之间的修改和差异,参数不同。
相关文章