git rebase 变基命令——移花接木


语法

git rebase [--onto <newbase>] <since> [<till>]​
git rebase (--continue | --skip | --abort | --quit)

提示:方括号 [ ] 表示可选,...表示可以有多项。


描述

  • ① 首先会执行 git checkout 切换到 <till>;

  • ② 将 <since>…<till>所表示的提交范围写到一个临时文件中;
    <since>..<till> 是指包含<till>的所有历史提交,排除<since>及<since>的历史提交后形成的版本范围。

  • ③ 将当前分支强制重置(git reset --hard)到 <newbase>(或 <since> 如果未指定 <newbase> );

  • ④ 从保存在临时文件中的提交列表中,将提交逐一按顺序重新提交到重置之后的分支上;

  • ⑤ 如果遇到提交已经在分支中包含,则跳过该提交;

  • ⑥ 如果在提交过程中遇到冲突,则变基过程暂停,用户解决冲突后,执行 git rebase --continue 继续变基操作。或者执行 git rebase --abort 就此终止变基操作并切换到变基前的分支上。


git rebase <since> [<till>]​

假设有如下分支

在这里插入图片描述

则执行如下命令

在这里插入图片描述

结果将会是

在这里插入图片描述


git rebase --onto <newbase> <since> <till>

假设有如下分支

在这里插入图片描述

则执行如下命令

在这里插入图片描述

结果将会是

在这里插入图片描述


冲突解决

如果发生冲突,git rebase 会在第一个有问题的提交停止,并在文件中留下冲突标记。您可以使用 git diff 来定位标记 (<<<<<<) 并进行编辑以解决冲突。对于你编辑的每个文件,你需要告诉Git冲突已经解决,这通常是用如下命令完成

git add <filename>

在手动解决冲突并使用所需的解决方案更新暂存区之后,您可以使用如下命令继续变基流程

git rebase --continue

或者你可以使用如下命令撤销 git rebase

git rebase --abort


--onto <newbase> 选项——指定新提交起点

新提交的起始点。如果没有指定——onto选项,则起始点为 <since>。可以是任何有效的提交,而不仅仅是现有的分支名称。


--continue 选项——继续变基

在解决合并冲突后重新启动变基流程。


--abort 选项——终止变基

中止变基操作并将 HEAD 重置到原始分支。如果在 rebase 操作开始时提供了 <till>,那么 HEAD 将被重置为 <till>。否则,HEAD 将被重置到变基操作开始时的位置。


--skip 选项——跳过冲突的提交

跳过当前冲突的提交,继续变基流程。


--quit 选项——终止变基

中止变基操作,但不会将HEAD重置回原始分支。因此,暂存区和工作区也保持不变。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值