工作总结之使用git标签回滚代码

工作总结之使用git标签回滚代码

背景

要求研究如果上线的代码出现问题如何使用git打标签的方式回滚版本

git标签回滚代码(探究过程)

  1. 先制造三次提交
  2. 打上tag并查看(命名规范采用分钟+时间的方式)
  3. 再提交第四次,并且另一端也获取到的最新代码
  4. 回滚到第三次并且不更改本地文件(--soft参数)


    现象:第四次提交的内容idea已经让它变成了修改提示
  5. 然后另一端pull一下,准备进行第五次提交


    现象:pull的时候同步处的数字为1(图片没有体现出来,忘截图了),表明其实git已经知道远程有变化了,但是,pull拉取不了这个变化,当我准备进行第五次提交时,同步处的数字变为了2,因为前面感知到的变化加上接下来的第五次修改,所以为2呀
  6. 小插曲,由于另一端是ubuntu,笔者不知道怎么配置https的方式提交代码,找了一圈也没有发现,于是只得重新用ssh拉取代码

    现象:重新ssh拉取后的代码被重置回了第三次提交
  7. 补上第四次提交(因为需要再次重置回第三次,看另一端的情况)
  8. 再次重置回第三次
git reset --soft 9e6381c
git push -f origin test

ps:9e6381c是commit_id的前七位,七位足够了;-f是强制提交,因为本地版本落后于远程,需要强制提交,否则会失败
9. 另一端pull一下,再次准备进行第五次提交


现象:同步骤5
10. 另一端进行push

现象:另一端push成功之后,会在不知情的情况下提交之前被丢掉的代码,所以由此可见,回滚分支之后,另一端(其他人)最好重新克隆一次代码
11. 最后再验证一下,是不是因为vscode的原因在pull的时候无法识别远程已被重置的代码

  • 先在另外的位置(merge-code2)单独克隆一份该项目,使用idea打开,保持最新;再一次(最后一次)回滚到第三次提交(位于merge-code)
  • 使用连idea拉取,查看是否能拉取到回滚之后的变化

    现象:idea也不能拉取到回滚之后的变化

总结

tag的作用仅仅是针对每一次的commit,仅仅起到一个提示作用,比起commit_id要更容易理解;
通过tag找到commit_id来回滚代码更易于操作,不足之处在于,其他人不能拉取到回滚之后的变化,只能通过重新克隆的方式来拉取到这个变化;
有人可能会想到用revert,因为每一次revert都相当于一次提交,可是如果有很多次提交,操作起来会相当繁琐。

posted @ 2023-06-12 01:16  xiaoxiaoguai98  阅读(107)  评论(0编辑  收藏  举报