Published on

使用 git rebase 创建新分支并继承部分提交 | git cherry-pick

Authors
  • avatar
    Name
    Shelton Ma
    Twitter

1. 使用 git rebase

1. 让 develop 继承 master,并丢弃部分提交

  1. 创建新分支

    # 基于master创建新分支
    git checkout -b develop master
    
  2. 执行交互式 rebase

    git rebase -i master
    
  3. 在交互界面删除不需要的提交, 之后产生新的分支

2. git rebase 使用说明

# 交互式 Rebase 最近3个提交
git rebase -i HEAD~3

# 显示为
pick 9a1c2f3 feat: 添加登录接口
pick 2b4d5e6 fix: 修复 token 错误
pick 7e8f9g0 chore: 修改注释

# pick    保留此提交
# reword  保留commit但需要修改message
# edit    保留提交, 进入edit模式
# squash  将提交合并到上一个
# fixup   类似squash, 但不保留message
# drop    删除提交

2. 使用 git cherry-pick

作用是从其他分支中“挑出一个或多个提交”,应用到你当前所在的分支上,

cherry-pick 的行为特点:

  • 会把你指定的提交内容复制一份放到当前分支,并生成新的 commit hash
  • 不会保留原来的分支结构或提交序列
  • 如果发生冲突,需要你手动解决并 git cherry-pick --continue
  1. 创建新分支

    git checkout master
    git checkout -b develop
    
    git cherry-pick a1b2c3 d4e5f6 g7h8i9
    git push origin develop
    
  2. Git提交被撤销, 再次提交显示无更改的处理办法

3. git rebase VS git revert VS git cherry-pick

  1. git rebase -i(推荐,用于修改历史), 适用于想彻底删除某些提交,并保持提交记录干净。
  2. git revert(适用于已推送的提交,避免破坏历史, )
  3. git cherry-pick (用于创建新分支, 包含新的commit hash)