当前位置:首页 > git > 正文

彻底搞懂git rebase(gitrebase和merge应用场景)

  • git
  • 2024-03-10 07:49:28
  • 9476
## Git Rebase
Git Rebase 是一个命令,用于将一系列提交从一个分支转移到另一个分支,同时保留它们的提交历史。
### 特征
- 非线性历史:Rebase 允许你重新组织提交历史,创建非线性历史记录。
- 合并冲突解决:Rebase 会在转移提交时自动解决冲突。
- 保持原有顺序:Rebase 保持提交的原始顺序,即使它们已被重新排列。
- 强制性推动:Rebase 会强制更新远程分支,即使其他开发人员已经推送了提交。
### 用例
- 修复错误并保持提交的上下文
- 重新组织提交以创建更清晰的历史记录
- 在合并之前解决合并冲突
- 重新定位提交到不同的分支
### 步骤
Rebase 的步骤如下:
1. 切换到目标分支:使用 git checkout 命令切换到要重定位提交的目标分支。
2. 获取源提交:使用 git fetch 命令获取源分支上包含要转移的提交的最新提交。
3. Rebase:使用 git rebase 命令,后面跟源分支的名称,例如:

git rebase origin/main

4. 解决冲突:Rebase 会自动尝试解决转移提交时的冲突。 如果遇到冲突,需要手动解决并进行提交。
5. 强制推送:如果需要,使用 -f 选项强制推送 rebased 分支到远程仓库:

git push -f origin head

### 示例
示例 1:修复错误
假设你发现一个错误,并希望在将其合并到 main 分支之前修复它。 你可以使用以下步骤进行 rebase:
1. 切换到 bugfix 分支:

git checkout bugfix

2. 获取 main 分支上的提交:

git fetch origin

3. Rebase bugfix 分支到 main 上:

git rebase origin/main

4. 修复冲突并提交:

# 修复冲突代码...
git add .
git commit -m "Fix bug"

5. 强制推送 bugfix 分支:

git push -f origin bugfix

示例 2:重新组织提交
假设你有几个提交,你想重新组织它们以创建更清晰的历史记录。 你可以使用以下步骤进行 rebase:
1. 切换到 wip 分支:

git checkout wip

2. 获取 main 分支上的提交:

git fetch origin

3. Rebase wip 分支到 main 上,使用 -i 选项进行交互式 rebase:

git rebase -i origin/main

4. 重新排列提交顺序并保存修改:

# 交互式 rebase 菜单中...
# 移动提交 3 到提交 1 之前
m 3 1
# 合并提交 2 和 4
s 2 4
# 保存更改
w

5. 解决冲突并提交:

# 修复冲突代码...
git add .
git commit -m "Reorganize commits"

6. 强制推送 wip 分支:

git push -f origin wip

上一篇:git pull rebase

下一篇:git rebase用法简书