我试图在GitHub上为项目“ original / QWERTY”创建拉取请求,因此我将存储库分叉到“ Mark / QWERTY”。在Eclipse中,我已经为“原始/ QWERTY”设置了存储库,并且该项目在我的工作区中,名为QWERTY。
现在,如果我创建一个指向“ Mark / QWERTY”的新存储库,那么我将有两个名称相同的项目,而我和Eclipse都不喜欢它。
我认为应该可以在存储库下有一个分支或另一个remote
并在它们之间切换,而不要有两个副本(我的意思是只存储差异)。问题在于它们是GitHub上的不同项目,所以我不确定该怎么做。
设置两个GitHub项目以使用EGit在Eclipse中创建从我的叉子到原始项目的拉取请求的正确方法是什么?
答案 0 :(得分:3)
分叉存储库的通常工作流程是拥有一个本地存储库,该存储库具有一个工作目录,该目录配置为从多个远程存储库中提取和推送到多个远程存储库。
使用此设置,您可以在源自不同远程存储库的分支之间进行切换。
GitHub的Fork a repo文档解释了使用CLI Git时的设置。大多数情况也应适用于其他地方托管的存储库。
使用EGit文档,应该可以将这些说明转换为EGit中的相应操作。
此处介绍了如何使用EGit管理多个遥控器:https://wiki.eclipse.org/EGit/User_Guide#Remote_Repositories
答案 1 :(得分:1)
使用来自Rudiger的comment和answer的信息以及我对分支机构的反复试验,我做了自己的步骤。 This picture也有助于术语。
首先,以任意顺序执行以下两项操作:
master
分支。
origin
(默认)。如果尚未完成配置,则配置它,默认规范为+refs/heads/*:refs/remotes/origin/*
。该参考规范将 all 的repo分支映射到同名的Remote Tracking分支。如果您只想获取master
分支,请使用+refs/heads/master:refs/remotes/origin/master
。origin/master
”的“远程跟踪”分支和一个名为“ master
”的本地分支,其配置为“远程:原始”和“上游分支:refs / heads / master”。您将在本地master
下工作,因为它是当前唯一的分支。现在,您希望能够按入您的叉子,以便创建PR。您可以并且确实已经从原著中撤出,可以继续从其他人的作品中获取更新。
fork
(无论您需要什么名称)。配置其推送。
origin
远程URI指向原始叉的方式相同。refs/heads/*:refs/heads/*
。使用此规范很容易,但是您可以将其更改为所需的任何内容。master
的本地分支,并且该分支的名称适合其用途。它可以是master
分支,也可以是可以修复错误的新分支,因此bug 123
。您没有远程跟踪分支,因为这些分支用于提取。如果您还从fork
中拉出,则需要在远程fork
中进行配置,并获得一个远程分支。bug 123
上(您可以在其旁边看到一个对号)。修复代码中的错误,并在Git Staging视图中,您应该看到文件已更改,并且标题为<Repository name> [bug 123]
。确保要提交/推送到正确的分支!暂存所需的内容并提交(将更改添加到本地分支bug123
)并推送(如果您使用默认规范,则在github存储库上创建一个名为bug 123
的分支)。一旦PR合并到GitHubm上原始文档的master
分支中,您将要从master
获取。
origin
或其获取的“ subdir”,然后选择获取。将会获取远程分支 all 中的所有更改,因为我们使用的获取规范会映射所有分支(我们使用*
字符)。就是这样。继续切换到基于更新的master
映射到您的fork的本地分支,修复错误,提交并推送,创建PR,等待合并到原始文件,从原始文件中提取和提取。