git rebase 的基本概念

git rebase 是一种用于将一个分支的提交记录移动到另一个分支的基点的操作。与 git merge 不同,rebase 会重新应用提交,使得提交历史更加线性化。

git rebase 的使用场景

  1. 整理提交历史:将多个提交合并为一个或重新排列提交顺序。
  2. 同步分支:将当前分支的提交基于目标分支的最新提交重新应用。
  3. 避免合并提交:保持提交历史的线性,避免不必要的合并节点。

git rebase 的基本语法

git rebase <目标分支>

例如,将当前分支的提交基于 main 分支的最新提交重新应用:

git checkout feature
git rebase main

交互式 rebase

交互式 rebase 允许在重新应用提交时修改、合并或删除提交。使用 -i 参数启动交互式模式:

git rebase -i <目标分支或提交哈希>

进入交互式界面后,可以对提交进行以下操作:

  • pick:保留提交。
  • squash:将提交合并到前一个提交中。
  • edit:暂停 rebase,允许修改提交。
  • drop:删除提交。

解决冲突

在 rebase 过程中可能会遇到冲突,需要手动解决:

  1. 编辑冲突文件,标记冲突已解决。
  2. 使用 git add <文件> 将文件标记为已解决。
  3. 继续 rebase 过程:
git rebase --continue

如果放弃 rebase 过程:

git rebase --abort

rebase 的注意事项

  1. 不要对公共分支使用 rebase:rebase 会重写提交历史,影响其他协作者的工作。
  2. 备份分支:在复杂的 rebase 操作前,建议创建备份分支。
  3. 谨慎使用 force push:rebase 后可能需要 git push --force,但需确保不与团队协作冲突。

rebase 与 merge 的区别

  • merge:保留原始提交历史,生成合并提交。
  • rebase:重写提交历史,使提交线性化。

示例:合并多个提交

  1. 启动交互式 rebase:
git rebase -i HEAD~3

  1. 在编辑界面中将后两个提交标记为 squash
pick abc123 Commit 1
squash def456 Commit 2
squash ghi789 Commit 3

  1. 保存退出后,git 会提示编辑最终的提交信息。

示例:同步分支

feature 分支基于 main 分支的最新提交重新应用:

git checkout feature
git rebase main

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐