merge and rebase

The difference of merge and rebase

rebase


rebase process

  <!-- state -->
  feature S01 and S02 created in node A(dev)
  SO1 commit once and in node B
  S02 commit once and in node C
  <!-- opeartion -->
  check in S02 and rebase S01 to S02
  it seems that S02 created in node B rather than A
  then C
  before
  S02 A -> C
  now
  S02 A -> B -> C'

diff

  1. merge will always generate a ‘merge’ commit () when –no-ff
    but rebase will not, it seems that fast-forward every time
  2. rebase means that updates current up stream, then changes current commits
  3. ‘merge’ commits is easier to distinguish when update upstream and rolling back is easier.
    However, the merge commit that dev is merged to feature looks complex.

roll back

 git checkout mybranch # if needed
 git reset --hard ooooooo  # or mybranch@{1}

stackoverflow.com/undoing-a-git-rebase

stackoverflow.com/undo-git-rebase

recommend

merge is recommend because when co-work, the ‘merge’ commits is easier to distinguish which feature

cherry-pick rebase children interactively

cherry-pick, merge, rebase

git rebase的原理之多人合作分支管理

git rebase介绍

git-scm-cn

git-scm-en

### GitMergeRebase 和 Squash and Merge 的区别及用法 #### 合并操作 (Merge) 当运行 `git merge` 命令时,会创建额外的合并提交。这有助于保留完整的分支历史记录,在团队协作环境中尤其重要。然而,在本地仓库工作时,过多的合并提交可能会使提交历史变得混乱[^1]。 ```bash # 创建一个新的特性分支 $ git checkout -b feature_branch # 开发完成后切换回主分支准备合并 $ git checkout main # 将特性分支合并到主分支 $ git merge feature_branch ``` #### 变基操作 (Rebase) 为了避免不必要的合并提交,可以采用变基的方式。通过执行 `git rebase` 而不是直接合并,能够将当前分支上的更改应用到目标分支顶部,从而保持线性的项目历史。这种方式使得历史更加清晰易读。 ```bash # 切换至要变基的目标分支上 $ git checkout target_branch # 执行交互式变基来整理提交信息 $ git rebase -i HEAD~N # N表示最近几次提交的数量 ``` #### 平坦化合并 (Squash and Merge) 对于希望简化多条提交的情况,可以选择使用 `git merge --squash` 或者在交互模式下进行变基 (`git rebase -i`) 来实现平坦化的单次大提交效果。这两种方法都可以生成一个压缩后的提交版本[^2]。 ```bash # 使用 squash 方式合并分支 $ git merge --squash source_branch # 提交这些改动作为单一的新提交 $ git commit ``` 或者: ```bash # 进入交互式的变基过程指定哪些提交需要被压平 $ git rebase -i HEAD~N ``` 每种方式都有其适用场景:如果重视维护原始的历史结构,则应优先考虑常规的合并;而对于追求简洁明了的日志展示来说,变基或是平坦化可能是更好的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值