Git(hub)分配自己的回购请求

时间:2016-06-27 23:03:33

标签: git github version-control

所以我有project1包含所有代码,以便它本身可以正确运行。 Project2使用与project1相同的代码库,但具有修改,新功能等。

鉴于2个项目的目标略有不同,我会独立处理它们,但如果有一些适用于这两个项目的常见代码(如错误修复),我会在一个项目中进行更改,并发出拉取请求到另一个。否则,这2个项目的行为就好像他们彼此不了解一样

如何在github上设置此类工作流程?我在这里读了很多关于如何分配你自己的回购的线程/问题,但这不是我的问题

到目前为止,我有:

  • 创建了一个新的空白仓库(project2)
  • 将project2克隆到我的机器
  • 添加了新的上游远程(project1)
  • 从上游
  • 下拉变更
  • 将代码从project2推送到project2 repo

本质上,这给了我project1的完整副本,但是在project2 repo中。我可以做通常的事情,独立提交和推送每个回购,以解决我的一半问题

现在,如果需要提交并推送到两者的类似错误修复,我该怎么做?

当我在github上转到project2并点击pull请求时,我只能看到来自project2分支和project2 forks的请求。我从project1中看不出任何东西。同样,当我检查来自project1的拉取请求时。

这2个项目看不到彼此,这使得它与实际的fork不同(我认为?),那么如何修复错误并从这2个回购中创建拉取请求?

或者是否有更好/更合适的方式来处理2个略有不同的回购,您希望能够在两个项目中进行拉动请求并合并常见的更改?

1 个答案:

答案 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