在 Eclipse 中拥有原始项目时如何处理项目分支?

How to work on a project fork when having the original in Eclipse?

我正在尝试在 GitHub 上为项目 "original/QWERTY" 创建拉取请求,所以我将回购分叉到 "Mark/QWERTY"。在 Eclipse 中,我已经为 "original/QWERTY" 设置了一个存储库,该项目在我的工作区中,名为 QWERTY。

现在,如果我创建一个指向 "Mark/QWERTY" 的新存储库,我将有两个同名的项目,我和 Eclipse 都不会喜欢它。

我认为应该可以在存储库下有一个分支或另一个 remote 并在它们之间切换而不是有两个副本(我的意思是只存储差异)。问题是它们是 GitHub 上的不同项目,所以我不确定该怎么做。

设置两个 GitHub 项目以使用 EGit 创建从我的分支到 Eclipse 中原始项目的拉取请求的正确方法是什么?

分叉存储库的通常工作流程是拥有一个本地存储库和一个配置为获取和推送 from/to 多个远程存储库的工作目录。

使用此设置,您可以在源自不同远程存储库的分支之间切换。

GitHub 的 Fork a repo 文档解释了使用 CLI Git 时的设置。其中大部分也应该适用于其他地方托管的存储库。

使用EGit文档,应该可以将这些指令翻译成EGit中相应的动作。

如何使用 EGit 管理多个遥控器记录在此处:https://wiki.eclipse.org/EGit/User_Guide#Remote_Repositories

使用 Rudiger comment and answer and my trial and error with branches I made my own steps. This picture 中的信息也有助于术语。

首先,按任意顺序做这两件事:

  • 在 github 网站上创建原始项目,现在您有了原始项目和分支。他们有相同的代码和分支。
  • 在 github 上创建指向 原始 存储库的本地存储库。假设您决定 select 仅 master 分支。
    • 遥控器:你得到一个新的遥控器,我称之为 origin(默认)。如果没有为您完成,请配置其提取,默认规范为 +refs/heads/*:refs/remotes/origin/*。此参考规范将 所有 回购分支映射到具有相同名称的远程跟踪分支。如果您只想获取 master 分支,请使用 +refs/heads/master:refs/remotes/origin/master.
    • 分支:你得到一个名为 origin/master 的 "Remote Tracking" 分支和一个名为 master 的本地分支,配置为 "Remote: origin" 和 "Upstream Branch: refs/heads/master"。您将在本地 master 下工作,因为它是目前唯一的分支。

现在您希望能够推送到您的分叉,以便创建 PR。您可以并且已经从原作中提取内容以不断从其他人的作品中获取更新。

  • 右键单击 "Remotes" 并创建一个新的遥控器,我将其命名为 fork(您可以随意命名)。配置它的推送。
    • URI 指向您的分叉的方式与 origin 远程 URI 指向原始 URI 的方式相同。
    • ref 映射映射分支。如果没有为您完成,请转到 "Advanced" 并单击 "Add All Branch Specs"。您应该得到规范 refs/heads/*:refs/heads/*。使用此规范很容易,但您可以将其更改为您需要的任何内容。
  • 创建一个本地分支(右击->切换到->新建分支),其来源是名为master的本地分支,分支名称是任何适合它的功能。它可以是 master 分支,也可以是修复错误的新分支,所以 bug 123。您没有 远程跟踪分支,因为它们用于拉取。如果您还从 fork 拉取,那么您将需要在远程 fork 中配置它并获得一个远程分支。
  • 现在您正在处理本地分支 bug 123(您可以在它旁边看到一个复选标记)。修复代码中的错误,在 Git 暂存视图中,您应该会看到文件已更改并且 标题为 <Repository name> [bug 123]。确保您要 commit/push 到正确的分支!暂存您需要的任何内容并提交(将更改添加到本地分支 bug123)并推送(如果您保持默认规范,则在 github 存储库上创建一个名为 bug 123 的分支)。
  • 现在转到原始或分支的 GitHub 回购页面,UI 会告诉您可以创建 PR。从那里 GitHub 会指导你。

一旦 PR 合并到 GitHubm 上原始的 master 分支,您将需要从 master.

中获取
  • 右键单击远程 origin 或其提取 "subdir" 并选择提取。这将获取 所有 远程分支中的任何更改,因为我们使用的获取规范映射了所有分支(我们使用了 * 字符)。

就是这样。继续切换到本地分支,映射到你的基于更新的fork master,修复错误,提交并推送,创建PR,等待合并到原来的,从原来的获取和拉取。