无法跨分叉执行拉取请求,那么如何获取我的更改?
Cant do a pull request across forks so how do I get my changes in?
所以我是 Git 的新手,因此我的很多术语可能不在这里
- 所以有一个主存储库,我们称之为 "Mainline"
- 我和我的队友 fork Mainline 独立开发功能。让我们称这些为 "teammatefork" 和 "myfork"
- 有时我们会在我们的分叉上执行拉取请求以将我们的更改添加到 Mainline
- 最近我向 "myfork" 添加了一堆代码,这些代码本质上是构建测试工具的代码。我们决定再次将 "Mainline" 分叉到 "TestHarness" 以提交这些东西
- 我刚刚意识到我无法在 "myfork" 上执行拉取请求以将更改合并到 "TestHarness"
在这里做 'rebase' 正确吗? - 我不太确定,但听起来不错。本质上,我想将我的更改从 myfork 转移到 TestHarness 分支中,这两个都是 Mainline
的分支
然后我想将 2 个修订版返回到我的叉子上,所以我回到了添加测试工具代码之前的起点
有人可以指出执行此操作需要什么 git 魔法吗?
如果我正确理解问题,你有 4 个存储库:
- "Mainline"
- "MyFork"
- "TeammateFork"
- "TestHarness"
您在 "MyFork" 上有要 "move over" 到 "TestHarness" 的提交。
首先,您可能需要重新考虑处理分叉的方式。您的 TestHarness 更改是否大到需要新存储库?
如果你确定要继续你的道路,我想我会这样做:
我会先去您的 "TestHarness" 存储库并将您的 "MyFork" 添加为远程存储库并获取其数据:
git remote add myfork myfork_url
git fetch myfork
然后我会 cherry pick 你的 "MyFork" 存储库中的两个提交:
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
所以我是 Git 的新手,因此我的很多术语可能不在这里
- 所以有一个主存储库,我们称之为 "Mainline"
- 我和我的队友 fork Mainline 独立开发功能。让我们称这些为 "teammatefork" 和 "myfork"
- 有时我们会在我们的分叉上执行拉取请求以将我们的更改添加到 Mainline
- 最近我向 "myfork" 添加了一堆代码,这些代码本质上是构建测试工具的代码。我们决定再次将 "Mainline" 分叉到 "TestHarness" 以提交这些东西
- 我刚刚意识到我无法在 "myfork" 上执行拉取请求以将更改合并到 "TestHarness"
在这里做 'rebase' 正确吗? - 我不太确定,但听起来不错。本质上,我想将我的更改从 myfork 转移到 TestHarness 分支中,这两个都是 Mainline
的分支然后我想将 2 个修订版返回到我的叉子上,所以我回到了添加测试工具代码之前的起点
有人可以指出执行此操作需要什么 git 魔法吗?
如果我正确理解问题,你有 4 个存储库:
- "Mainline"
- "MyFork"
- "TeammateFork"
- "TestHarness"
您在 "MyFork" 上有要 "move over" 到 "TestHarness" 的提交。
首先,您可能需要重新考虑处理分叉的方式。您的 TestHarness 更改是否大到需要新存储库?
如果你确定要继续你的道路,我想我会这样做:
我会先去您的 "TestHarness" 存储库并将您的 "MyFork" 添加为远程存储库并获取其数据:
git remote add myfork myfork_url
git fetch myfork
然后我会 cherry pick 你的 "MyFork" 存储库中的两个提交:
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