作者回复: 工程上,主要是解耦和增量开发。解耦好理解,把功能进行拆分。而增量开发这个一般大家提的不多。主要是在实现功能的时候,考虑怎么样实现最小子功能,即时这个子功能不能暴露给用户。我以后抽空详细写一下,通过代码的实际例子来解释应该更清楚。
作者回复: http://onlywei.github.io/explain-git-with-d3/#rebase
交互式的界面学rebase。推荐看看 :)
作者回复: 1-----
> 但有个比较纠结的是...
我一般是使用为rebase或者cherry-pick,把这些分支上的都放到合并到一个分支上,不使用merge --no-ff命令。
至于提交的粒度,就要考虑原子性了。尽量是单个提交只完成单个需求。当然,有些时候如果bug fix很小,也可以选择把多个bug fix合并成一个提交。
2-----
> 1。先备份当前分支,比如git branch temp
> 2。git reset —hard HEAD^
> 3。修改并git commit —amend —no-edit
> 4。git cherry-pick 后面的commit 😄
> 或者git checkout temp ;git rebase xxx 刚才修改后的commit (不知道可不可行)
这两种办法都可以,都很好!
还有第三个办法,我一般是把提交交换顺序,把要修改的提交放到HEAD处修改。
另外,我还第一次见到--no-edit。我以前都是用 commit --amend -a -C HEAD来完成类似功能 :)
作者回复: >第二种为主,然后在某个branch内部结合第一种的情况比较容易驾驭
的确是这样。第1种操作的确是要求比较高。而且如果有比较多的提交的话,rebase的overhead会比较大。所以单独的分支上不推荐,产生太多的提交。
> 很头疼的问题是很多老同事没有深入学习git的主动性和激情
如果他们能够意识到git的强大能够帮助自己提高研发效率的话,可能就会更愿意投入一些。能不能给他们搞点集体培训什么的?对团队效能提升帮助应该不错