无法跨叉执行拉取请求,以便如何进行更改?

时间:2015-11-28 20:33:23

标签: git github bitbucket git-merge git-fork

所以我是Git的新手,所以很多我的术语可能都在这里

  1. 所以有一个主存储库,我们称之为“Mainline”
  2. 我的队友和我分享Mainline独立开发功能。让我们称之为“teammatefork”和“myfork”
  3. 偶尔我们会在售票处执行拉动请求,将我们的更改添加到主线
  4. 最近我向“myfork”添加了一堆代码,这本质上是构建测试工具的代码。我们决定将“Mainline”再次分配给“TestHarness”来提交这些东西
  5. 我刚刚意识到我无法对“myfork”执行拉取请求以将更改合并到“TestHarness”
  6. 这里做正确的'rebase'是正确的吗? - 我不太确定,但听起来不错。基本上我想从myfork到TestHarness fork我的更改,这两个都是Mainline的分支

    然后我想回到我的fork的2个版本,所以我回到我开始之前添加测试工具代码

    有人可以指出执行此操作需要什么样的git魔法?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,那么你有4个存储库:

  • “主线”
  • “MyFork”
  • “TeammateFork”
  • “TestHarness”

你想在“MyFork”上提交你想要“移动”到“TestHarness”。

首先,您可能想重新考虑处理货叉的方式。您的TestHarness是否因需要新存储库而变大?

如果你确定要继续你的路径,我想我会这样做:

我首先访问您的“TestHarness”存储库并将“MyFork”添加为远程存储库并获取其数据:

git remote add myfork myfork_url
git fetch myfork

然后我会从你的“MyFork”存储库中cherry pick你的两次提交:

git cherry-pick commit_1_hash
git cherry-pick commit_2_hash

现在你应该在你的“TestHarness”分叉上进行两次提交。

返回“MyFork”,然后按如下步骤退回两步:

git reset --hard HEAD~2

请注意,这会在“MyFork”分叉上永久删除您的更改。如果您想保留--hard,可以将其删除。

如果您想查看存储库的当前状态,请随时尝试

git log --graph --decorate --all