Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

git 实践之 —— 脏 PR 处理(1)

  团队里总是有一些不太熟悉 git 的同学,每次看到他们的 PR 都是一堆 merge,以及一堆莫名其妙的 commit。比如一起看到一个丧心病狂的 PR 中几十个参杂着 merge 的 commit,全部都名为 fix。然而程序确实是可以正常工作的,这种脏到不能再脏的 PR 要如何处理呢?
  让大家自己去把 PR 搞干净吧?感觉对于不熟悉 git 的同学来说确实有点难度。而且比较耗时间,说不定搞着搞着就把自己的代码全搞没了,导致功能上线延期等等问题。现在我就来介绍一下如何把这些脏 PR 搞干净!
  方法有很多,现在介绍一个逻辑上最简单的方法。从主分支开一个干净的分支,然后把 PR 中所有非 merge 的 commit 全部 cherry-pick 过来。也许这么做有点累?但这个方法是最保险,也是最容易理解的。
  然后甚至有同学会问如何从主分支开一个干净的分支?同样有很多方法,这里只介绍最简单的,直接使用 fetch。假设主仓库的 remote 叫 origin,主分支叫 master,下面的命令就是从主仓库的主分支直接开出一个名为 xxx 的本地分支。这个分支绝对是干净而且是最新的。 git fetch origin master:xxx git checkout xxx   然后使用 checkout 切换到这个分支,再用 cherry-pick 命令把 PR 上的非 merge commit 按从旧到新的顺序(注意顺序很重要,要不然会冲突到死)一个个拉过来。 git cherry-pick COMMIT_HASH_1 git cherry-pick COMMIT_HASH_2 # ... git cherry-pick COMMIT_HASH_n   cherry-pick 的功能是将 commit 的修改拉到当前分支上。这个操作可能会产生冲突,有时需要解冲突才能完成。
  当所有非 merge commit 都被拉过来并解决掉所有冲突后,把这一坨 commit 使用 rebase 命令适当的合并、重命名,即可得到一个干净的版本。至于 rebase 命令如何使用我就不扯了,网络上随处都可以搜到。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^