回到过去的一万种方式 —— git 时光机


时光无法倒流,git 却让我们有机会修改历史

查看修改历史,代码回退是开发中经常用到的命令,但是很多时候,我们并不是非常明确其中的区别。这篇博客尝试说清楚其中的区别。

git checkout

git checkout hotfix // 切换分支
git checkout abbcde // 切换 commit

checkout 能够返回 commit ,用于查看 commit ,但是并不能修改或者回退 commit。

git revert

git revert HEAD^ // 回退到上一次的提交

revert 的回退严格来说并不是回退,他是用之前的 commit ,复制一遍,产生新的 commit ,实现的代码回退。

git reset

git reset c1 // 回退commit,保留源码到工作区
git reset --soft c1 // 回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;
git reset --mixed c1 // 回退到某个版本,回退文件保存在工作区中,并且是 unstaged 状态,如果需要提交,需要 staged,之后再commit
git reset --hard c1 // 彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉;

一万种方式??

一生二二生三三生万物,施主,不要有执念。


文章作者: Yao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Yao !
 上一篇
弱水三千,只取一瓢 —— git cherry-pick 弱水三千,只取一瓢 —— git cherry-pick
场景双主线的模式 AB,独自演进,存在一个共同的 bug,在 dev 上面修改好 bug 之后,需要合并到 AB 中,并且 A、B、dev 是一直在演进的,不能直接合并入 AB。 解决git checkout A // 切换到 A 分支 g
2020-12-03
下一篇 
忘记该忘记的,记住该记住的 —— git filter-branch 忘记该忘记的,记住该记住的 —— git filter-branch
Pro git 中把 filter-branch 称为 核弹,让人难以忘记,也充分说明了该命令的威力。 问题场景 在你的开源仓库中提交了,一个数据库的配置文件。 同事在仓库中把 node_modules目录提交到仓库中,并且这个目录还被后续
2020-12-01
  目录