git cherry-pick 将某一次/多次commit复制到其他仓库分支

1,278 阅读1分钟

commit复制

背景:由于使用的是微前端,其中某几个子应用都是在相同的项目上复制出去的,导致有很多相同的修改每次都需要 crlt C +crlt V很多遍。那么有没有什么更简洁的方式呢,有一种cherry-pick

环境和

  • 本地连接的远程仓库:默认是origin
  • 远程仓库:project1(url1)、project2(url2)
  • 需要复制的commit:aaa123
  • 分支:(分支名是否一样都是一样的操作)
    • 本地仓库:feat
    • project1:feat
    • project2:feat

目的

  • 将本地仓库feat分支的commit(aaa123)复制到远程project1和project2的feat分支

步骤

  1. git log 查看commit信息,记录好commitID(aaa123)
  2. git cherry-pick aaa123 (如果是多个commit记录可自行搜索,这里不再赘述)
  3. 将所需远程仓库拉到本地:
    • git remote add project1 url1
    • git fetch project1
    • git remote add project2 url2
    • git fetch project2
  4. 拉取远程仓库分支到本地 切换到远程仓库分支 git checkout project1/feat => 生成游离分支 => 保存游离分支到本地 git branch tmep1/feat => tmep1/feat连接到远程仓库 git pull project feat
  5. cherry-pick 内容到tmep1/feat分支 git cherry-pick aaa123
  6. tmep1/feat提交到远程仓库project1的feat 分支 git push project1 HEAD:feat (project为remote名字,feat为远程的分支)