工具篇:git rebase

6 篇文章 0 订阅

git rebase用于修改commit,包括合并多次提交、删除某些提交、修改提交信息、修改提交代码、复制某些提交到另一分支、合并其他分支代码到当前分支等。

注意事项:已经推送到远程仓库的commit,强烈不建议进行rebase操作。否则需要强制push或是产生其他一些问题。

格式:git rebase -i commit1 commit2

这里-i是--interactive的简写,表示进入交互式界面,编辑提交

commit参数是前开后闭,即不包含commit1,包含commit2。如果省略commit2,那么表明到最后一次commit。

一、合并提交

1. 开始修改最近n次提交,git rebase -i head~n,或git rebase -i head^^^(此处有n个^)

2. 第一个pick,剩余的全部是squash

3. 保存修改后,编辑提交信息,再保存,即完成合并。

二、删除提交

1. 开始修改最近n次提交,git rebase -i head~n,或git rebase -i head^^^(此处有n个^)

2. 修改待删除的提交前面为drop或d,其他提交前的pick不修改

3. 保存修改后,编辑提交信息,再保存,即完成删除

三、复制到另一分支

1. 把提交从commit1(不包括)到commit2(包括)复制到branchName分支上,git rebase commit1 commit2 --onto branchName

2. git log查看最后的提交,记录commit-id,再切换到目标分支

3. 使head指向最后的提交,git reset --hard commit-id

四、合并当前分支代码到目标分支

cherry-pick或merge是复制代码到当前分支,而rebase合并代码的方向与它们相反,是合并到目标分支。

1. 合并当前分支代码到目标分支

该命令会从当前分支与目标分支最近的祖先提交开始后,把当前分支之后的所有提交复制到目标分支上,当前分支名也指向了复制后的提交。再把HEAD指向目标分支名引用,再进行一次rebase,即可使得目标分支名引用指向复制后的提交。

sourceBranch> git rebase targetBranch

sourceBranch> git checkout targetBranch

targetBranch> git rebase sourceBranch

 

2. 如果有冲突,手动解决后,git rebase --continue

得到的提交记录比较干净,不会产生新的提交。使用git merge otherBranch时,会产生新的提交。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值