SourceTree 交互式变基(rebase) 合并压缩提交
目录零. 前置条件0.1 超级注意事项0.2 开启强制推送一. 代码已提交未推送交互式变基1.1 通过SourceTree操作1.2 通过Git命令行操作1.2.1 进入命令行终端指定交互变基版本1.2.2 指定需要处理的提交1.2.3 指定提交信息1.2.4 查看修改效果二. 代码已提交已推送交互式变基2.1 通过SourceTree操作2.2 通过Git命令行操作2.2.1 通过命令行进行交互式变基合并提交2.2.2 将合并的提交推送到远端零. 前置条件0.1 超级注意事项❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌避免在公共分支上使用 rebase❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌⏹不要在已经推送到公共仓库的分支上使用 rebase变基会重写提交历史这会使其他基于这些提交的工作分支出现冲突。如果你在公共分支上使用 rebase其他开发者可能会遇到合并冲突并且需要强制拉取和合并他们的工作这会带来很多不必要的麻烦。⏹如果将本地分支的代码已经推送到远端并且远端的代码并没有被合并到任何分支中并且没有任何人基于你的分支进行开发此时rebase操作不会对别人的开发带来影响。0.2 开启强制推送⏹默认情况下推送代码时的【强制推送】是无法点击的需要如下图所示手动开启才可以。一. 代码已提交未推送交互式变基1.1 通过SourceTree操作交互式变基可以将多次本地提交合并为一次提交简化提交履历。注意多次提交只是提交到本地Git仓库并没有推送到远端仓库。⏹如下图所示我们分3次提交了代码到本地Git仓库这3次提交都只是添加了console.log语句因此可以合并为一次提交然后推送到远端仓库⏹交互式变基操作如下所示选中要合并的提交的前一次提交点击交互式变基功能然后将多次提交合并为一次。1.2 通过Git命令行操作⏹如下图所示我们分3次提交了代码到本地Git仓库这3次提交都只是添加了console.log语句这次我们使用Git命令行的方式将这三次提交合并为一次。1.2.1 进入命令行终端指定交互变基版本⏹通过SourceTree的命令行模式进入Git命令行终端⏹指定交互变基的版本为最近的3次提交git rebase -i HEAD~31.2.2 指定需要处理的提交⏹如下图所示在vim模式下处理指定的提交pick保留该提交。reword保留该提交但允许你修改提交信息。edit保留该提交但在此提交暂停允许你进行更改。squash将此提交与前一个提交合并并保留两个提交的信息。fixup将此提交与前一个提交合并但丢弃此提交的信息。drop删除该提交。⏹如下图所示指定后两次提交与第一次提交合并同时丢弃后两次的提交信息f是fixup的简写同时指定要修改提交的消息的版本r是reword的简写⏹修改完成之后在vim模式下按下ESC之后输入wq保存1.2.3 指定提交信息⏹如下图所示又进入编辑提交信息的界面编辑完成之后同样在vim模式下按下ESC之后输入wq保存⇓⇓⇓⇓1.2.4 查看修改效果⏹如下图所示提交记录变成了一个提交更加整洁了二. 代码已提交已推送交互式变基2.1 通过SourceTree操作⏹如下图所示有三条已经推送到远程仓库的提交这三条提交只是对同一个文件进行修改。现在想让其合并为一次提交让提交记录更加的简洁。⏹下面通过动图的方式进行展示需要注意的是当合并完成之后会同时提示拉取代码和推送代码此时需要无视拉取代码因此如果此时拉取代码的话就会把远程仓库端的合并之前的代码再次拉取到本地了合并完提交之后直接推送代码的时候会报错因为修改了提交历史所以需要强行推送在提交的时候勾选【强制推送】的单选框就可以推送了。2.2 通过Git命令行操作2.2.1 通过命令行进行交互式变基合并提交⏹如下图所示有3次打印消息都已经推送到远端。⏹在git终端通过下面的命令对最近3次提交进行交互式变基。git rebase -i HEAD~3⏹效果如下2.2.2 将合并的提交推送到远端⏹ 直接推送的话会发生如下图所示的错误因为我们修改了提交历史所以需要强制推送。⏹git push origin 分支名称 --force⏹效果如下
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2416728.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!