使用cherry-pick在两个项目之间共享代码

需求:

如果做产品的话,你会发现有些项目之间其实是有很多共享的代码块儿的。有很多种方式可以来解决这个需求,修改代码的话,只需要修改一次。
不过我今天比较想记录一下使用git cherry-pick 的方式来把一个项目中的代码拿到另外项目里面里面去。

前提:

我们需把A项目中的部分代码移植到本项目里面去。

思路:

  • 每个项目其实可以有很多个remote origin 的。如果我们可以在B项目里,设置A项目的origin url。
  • 在B项目里面,把需要的branch 拉一份在本地。
  • 再通过cherry-pick 的方式,找到你想要的commit 号码。
  • 如果有冲突,就解决冲突就好了,完成以后,继续/提交。

具体步骤:

  1. git remote -v
    本地的git remote
git remote add targetName targetUrl

比如这里,咱们可以写:

git remote add testA http://123.123.123.git

这里的targetName 其实就是给这个仓库起一个alias,你后面要操作的时候方便很多。
完成这一步以后,再次git remote -v就能看到多了两个url ,一个fetch 一个push。
截至到这里,我们完成了思路里面的第一步

git fetch testA dev:cherry-pick-branch

这里的testA 就是你之前起的alias
dev就是你想cherry-pick 的分支,
cherry-pick-branch是你想把远程的代码,拉到本地的哪个分支,(一般是新起一个分支,比较干净)

git cherry-pick commitNo

这里的commitNo就是你在项目A 里面的提交commit 号码。

commitNo.png

$ git cherry-pick 99daed2
error: could not apply 99daed2... commit
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add ' or 'git rm '
hint: and commit the result with 'git commit'

如果发生冲突,就打开冲突的文件,解决冲突文件。完了之后继续git cherry-pick --continue
所有的cherry-pick 完了之后,就正常流程提交代码到B仓库里面就好了。

至此,就可以把A项目里面的内容通过cherry-pick的方式拿到了B项目。

(如有错误,烦请纠正,谢谢)

你可能感兴趣的:(使用cherry-pick在两个项目之间共享代码)