一、git 回滚代码
在日常的代码回滚中,常用的有两种方式:git revert 和 git reset 来进行回滚。
reset
当你希望提交的 commit 从历史记录中完全消失,例如:在 master 分支提交了 A—>B—>C 提交三个记录。如果 C 记录有问题,你想回滚到B就可以用 git reset 进行。一般在 develop 上功能开发,开发完后合并到 master 分支上线,如果上线发现合并分支问题将 develop 合并过来的分支进行回滚,即 develop 取消本次合并。
# 将 develop 分支合并到 mastergit merge develop# 查看 commit 记录git log# 回滚 commit id [不需要输入全部的commid一般是前7位就够用]git reset 69fde2c# 强制提交[本地的记录落后于仓库代码]git push \-f
当前的开发分支的 commit 记录是落后于要合并的目标分支的,原因 reset 滥用造成的,所以 reset 一定要慎用。
注意:如果协作开发时,大家都合并到 master 分支后,就不能用 reset 强行回滚 commit。因为会把其他人的提交记录冲掉,可以用 revert 来代替。
revert
抵消掉上一次提交或者抵消多个需要执行:git revert 倒数第一个commit id 倒数第二个commit。它不会改变过去的历史,没有任何丢失代码的风险。通常用于你 commit 一次后,发现提交的有问题就用 revert。
修改某次 commit 记录,又不影响后面的也可以使用 revert,会把你后面提交的记录放到工作区,只是合并时需要注意一点。
# revert 回滚git revert 16083ce# 查看 log 记录[新增一个记录: Revert xxx,原来的 xxx 还在]git log
二、git 删除分支
当一个分支被废弃时,我们要彻底删除一个分支。
[--delete 的缩写,必须完全和它的上游分支 merge 完成,如果没有上游分支,必须和 HEAD 完全merge]git branch -d develop[--delete --force 的缩写,在不检查 merge 状态下删除分支]git branch -D develop[-f 的简写,将当前分支重置到初始点,如果不使用 --force,则 git 分支无法修改一个已经存在的分支]git branch --force develop# 清理本地无效分支git fetch -p
三、commit 记录打 tag
在上线之前,我们需要对当前的 commit 记录打一个 tag,方便上线的代码有问题,根据 commit id 进行代码及时回滚。
# 列出所有的 taggit tag# 创建 taggit tag [tagName]# 将 tag 同步到远程服务器git push origin [tagName]# 查看 tag 详细信息,即对应的 commit 信息git show [tagName]
