git 跨项目合并代码

git 跨项目合并代码(cherry-pick使用方法)

前言

在实际开发中,往往有多个项目,代码相似。想要跨项目将另一个项目某个分支,或者其中部分提交合并过来,git 提供了相应方法。本文章简单介绍通过使用 cherry-pick 合并部分代码提交。值得注意的是,cherry-pick 适用于两个仓库差异不大的情况下。

  • 第一步 下载需要合并的仓库A,并切换到develop分支
    $ git clone https://gitee.com/ivy/project_a.git
    切换到要合并的分支(develop)
    $ git checkout develop
  • 第二步 获取远端需要合并的仓库B,我们将其命名为 target 仓库
    $ git remote add target https://gitee.com/ivy/project_b.git
  • 第三步 将远程仓库B抓取到本地
    $ git fetch target
  • 第四步 将仓库B的某次提交 合并到仓库A的develop分支上
    $ git cherry-pick 5d967e1c
    此时,git 可能会提示 “error: could not apply 6209f52b...” 是因为两个仓库没有取得关系
    在操作命令后加上 --allow-unrelated-histories
    $ git cherry-pick 5d967e1c --allow-unrelated-histories
    这样就将5d967e1c的提交合并过来了,但可能有文件冲突,需要解决冲突后提交到远端
    $ git push
    注意:当执行完 cherry-pick 以后,将会生成一个新的提交;这个新的提交的哈希值和原来的不同,但标识名一样;
    cherry-pick 常用命令命令集合:
    $ git cherry-pick : 单独合并一个提交
    $ git cherry-pick -x : 单独合并一个提交,且保留原提交者信息
    Git从1.7.2版本开始支持批量cherry-pick,就是一次可以cherry-pick多个commit
    $ git cherry-pick : 合并commit_id1&commit_id2 这会产生两个新的提交
    $ git cherry-pick .. : 合并从start到end区间的所有commit 注意:不包括 start_commit_id 也就是开区间(start-commit-id,end_commit_id]
    $ git cherry-pick ^.. : 合并从start到end区间的所有commit 包括 start_commit_id 即闭区间 [start-commit-id,end_commit_id]

致谢

作者:烟雨随风
链接:https://www.jianshu.com/p/08c3f1804b36

作者:阿凌(https://www.cnblogs.com/lfzm/)
https://www.cnblogs.com/lfzm/p/10681412.html
GitHub : https://github.com/AClumsy/ASF

你可能感兴趣的:(git 跨项目合并代码)