所以我有project1包含所有代码,以便它本身可以正确运行。 Project2使用与project1相同的代码库,但具有修改,新功能等。
鉴于2个项目的目标略有不同,我会独立处理它们,但如果有一些适用于这两个项目的常见代码(如错误修复),我会在一个项目中进行更改,并发出拉取请求到另一个。否则,这2个项目的行为就好像他们彼此不了解一样
如何在github上设置此类工作流程?我在这里读了很多关于如何分配你自己的回购的线程/问题,但这不是我的问题
到目前为止,我有:
本质上,这给了我project1的完整副本,但是在project2 repo中。我可以做通常的事情,独立提交和推送每个回购,以解决我的一半问题
现在,如果需要提交并推送到两者的类似错误修复,我该怎么做?
当我在github上转到project2并点击pull请求时,我只能看到来自project2分支和project2 forks的请求。我从project1中看不出任何东西。同样,当我检查来自project1的拉取请求时。
这2个项目看不到彼此,这使得它与实际的fork不同(我认为?),那么如何修复错误并从这2个回购中创建拉取请求?
或者是否有更好/更合适的方式来处理2个略有不同的回购,您希望能够在两个项目中进行拉动请求并合并常见的更改?
答案 0 :(得分:1)
是。组合git remote
的秘诀,它允许你的本地git repo从2个或更多github repos中提取,以及git cherry-pick
,它允许你从当前分支的其他地方重新应用提交。
假设您已经在project1上进行了提交,那么您可以运行:
cd ~/project1
git log
commit c947d3c40c2d479d6c79fa9894b352ac9210e5c5
Author: Brian Malehorn <>
Date: Mon Jun 27 17:29:02 2016 -0700
fixed the thing
cd ~/project2
git remote add project1 github.com/brian/project1
git fetch project1
git log project1/master
commit c947d3c40c2d479d6c79fa9894b352ac9210e5c5
Author: Brian Malehorn <>
Date: Mon Jun 27 17:29:02 2016 -0700
fixed the thing
git checkout -b fixed_the_thing
git cherry-pick c947d3c40c2d479d6c79fa9894b352ac9210e5c5
git push --set-upstream origin fixed_the_thing