一、git 回滚代码

在日常的代码回滚中,常用的有两种方式:git revert 和 git reset 来进行回滚。

reset

当你希望提交的 commit 从历史记录中完全消失,例如:在 master 分支提交了 A—>B—>C 提交三个记录。如果 C 记录有问题,你想回滚到B就可以用 git reset 进行。一般在 develop 上功能开发,开发完后合并到 master 分支上线,如果上线发现合并分支问题将 develop 合并过来的分支进行回滚,即 develop 取消本次合并。

  1. # 将 develop 分支合并到 master
  2. git merge develop
  3. # 查看 commit 记录
  4. git log
  5. # 回滚 commit id [不需要输入全部的commid一般是前7位就够用]
  6. git reset 69fde2c
  7. # 强制提交[本地的记录落后于仓库代码]
  8. git push \-f

当前的开发分支的 commit 记录是落后于要合并的目标分支的,原因 reset 滥用造成的,所以 reset 一定要慎用。

注意:如果协作开发时,大家都合并到 master 分支后,就不能用 reset 强行回滚 commit。因为会把其他人的提交记录冲掉,可以用 revert 来代替。

revert

抵消掉上一次提交或者抵消多个需要执行:git revert 倒数第一个commit id 倒数第二个commit。它不会改变过去的历史,没有任何丢失代码的风险。通常用于你 commit 一次后,发现提交的有问题就用 revert。

修改某次 commit 记录,又不影响后面的也可以使用 revert,会把你后面提交的记录放到工作区,只是合并时需要注意一点。

  1. # revert 回滚
  2. git revert 16083ce
  3. # 查看 log 记录[新增一个记录: Revert xxx,原来的 xxx 还在]
  4. git log

二、git 删除分支

当一个分支被废弃时,我们要彻底删除一个分支。

  1. [--delete 的缩写,必须完全和它的上游分支 merge 完成,如果没有上游分支,必须和 HEAD 完全merge]
  2. git branch -d develop
  3. [--delete --force 的缩写,在不检查 merge 状态下删除分支]
  4. git branch -D develop
  5. [-f 的简写,将当前分支重置到初始点,如果不使用 --force,则 git 分支无法修改一个已经存在的分支]
  6. git branch --force develop
  7. # 清理本地无效分支
  8. git fetch -p

三、commit 记录打 tag

在上线之前,我们需要对当前的 commit 记录打一个 tag,方便上线的代码有问题,根据 commit id 进行代码及时回滚。

  1. # 列出所有的 tag
  2. git tag
  3. # 创建 tag
  4. git tag [tagName]
  5. # 将 tag 同步到远程服务器
  6. git push origin [tagName]
  7. # 查看 tag 详细信息,即对应的 commit 信息
  8. git show [tagName]