Git 小课堂 004
2024-09-05 19:48:26
rebase——变基,就是这个可能会把事情搞得一团糟的操作。
对于变基,我只能说,需要一个配合默契的团队,你们心灵想通,互相了解,然后你们会做出非常漂亮的事情。对于使用变基且几乎不会出问题的团队,我一般都是由衷的赞叹和羡慕,因为真的是一群非常好的小伙伴,这样的同事在一起工作应该是非常开心的。
某次提交 commit id 为 master,基于此,有两个分支 master'(在 master 基础上有新的提交进行了更改) 和 develop,我要把 develop 的修改放到 master' 的后面,我需要做的是(git rebase master develop; git merge develop
):
git checkout develop
git rebase master'
git checkout master'
git merge develop
其中 rebase 的操作实际的过程是先找到 master' 和 develop 共同的基底,再将 develop 的每次修改暂存下来,然后将当前分支指向目标基底,再将暂存依次应用到目标基底,依次应用暂存修改。这样提交记录就是一条线了,尤其适用于向一些他人维护的项目提交 pr。rebase 还有更方便的用法,是 rebase --onto,这个就厉害了,可以让你的提交记录灵活更改,你会用吗?
都是合并代码,但 rebase or merge,这是问题,我不想加入争辩,各有道理,我们需要做的更多是把两个都会用,在不同的时候你自然会做出正确的选择。对了,rebase 还可以做一些 merge 做不到的事情。提一个小问题吧:
某一个项目的提交记录是:A->B->C->D->E,发现第三次修改 C应该被抛弃(A->B->D->E),文如何用 rebase 达到目的?答案请到 git rebase --help 中自行寻找。
最新文章
- ZK 使用Clients.response
- ImportError: No module named MySQLdb
- PostgreSQL表空间、模式、表、用户/角色之间的关系
- PostgreSQL index types and index bloating
- hnu Counting ones 统计1-n 二进制中1的个数
- 四步轻松实现用Visio画UML类图
- 1.Mariadb(mysql)基本操作
- C语言中的malloc和free
- Appium 解决中文输入问题
- [Usaco2006 Dec]Milk Patterns
- ASP.NET - 对URL传递的值进行编码Server.UrlEncode()
- 【翻译自mos文章】回收 asm磁盘空间的方法
- 当使用System,out.println()打印一个对象是自动调用toString方法
- fread函数详解
- iOS设备中垂直同步开启后的帧率计数
- tomcat第一次使用正常启动后访问8080端口报404错误
- Scala中foldLeft的总结
- Qt551.主窗体Margin
- [福大软工] Z班 团队Alpha阶段成绩汇总
- luoguP3830 [SHOI2012]随机树 期望概率 + 动态规划 + 结论