我分叉了一个项目,进行了更改,并创建了一个被接受的拉取请求。新的提交后来被添加到存储库中。我怎样才能把这些承诺交给我?


当前回答

Android Studio现在已经学会了使用GitHub fork存储库(您甚至不必通过控制台命令添加“上游”远程存储库)。

打开菜单VCS→ Git公司

并注意最后两个弹出菜单项:

重新使用我的GitHub分叉创建拉取请求

试试看。我使用第一个来同步本地存储库。无论如何,在您单击“Rebase my GitHub fork”后,可以在Android Studio中访问父远程存储库(“上游”)的分支,您将能够轻松地使用它们进行操作。

(我使用带有“Git集成”和“GitHub”插件的Android Studio 3.0。)

其他回答

前言:您的分叉是“源”,您分叉的存储库是“上游”。

假设您已经使用如下命令将分叉克隆到计算机:

git clone git@github.com:your_name/project_name.git
cd project_name

如果已给出,则需要按以下顺序继续:

将“上游”添加到克隆的存储库(“源”):git远程添加上游git@github.com:original_author/project_name.git从“上游”获取提交(和分支):git获取上游切换到分叉的“master”分支(“origin”):切换到主分支停止“主”分支的更改:暂存将“上游”的“主”分支中的更改合并到“源”的“母”分支中:git合并上游/主解决合并冲突(如果有)并提交合并gitcommit-am“从上游合并”将更改推到叉上数字推送找回你藏起来的零钱(如果有的话)吉特藏弹你完了!祝贺

GitHub还提供了有关此主题的说明:同步分叉

克隆分叉存储库后,转到克隆所在的目录路径和GitBash终端中的几行。

$ cd project-name

$ git remote add upstream https://github.com/user-name/project-name.git
 # Adding the upstream -> the main repo with which you wanna sync

$ git remote -v # you will see the upstream here 

$ git checkout master # see if you are already on master branch

$ git fetch upstream

你很好去那里。主存储库中所有更新的更改都将被推送到您的fork存储库中。

“fetch”命令对于保持项目中的最新状态是必不可少的:只有在执行“gitfetch”时,您才会被告知同事对远程服务器所做的更改。

您仍然可以访问此处进行进一步查询

如果像我一样,你从来没有直接向主人承诺过什么,你真的应该这样做,你可以做以下事情。

从fork的本地克隆创建上游远程。你只需要做一次:

git remote add upstream https://github.com/whoever/whatever.git

然后,每当您想赶上上游存储库主分支时,您需要:

git checkout master
git pull upstream master

假设你从未对师父做过任何事,你应该已经做了。现在,您可以将本地主机推送到源远程GitHub分叉。您还可以将开发分支重新基于当前最新的本地主机。

在初始的上游设置和主签出之后,您需要做的就是运行以下命令以将主设备与上游设备同步:git pull上游主设备。

许多答案最终会将fork移到父存储库之前一次提交。这个答案总结了这里找到的步骤,这些步骤会将您的fork移动到与父级相同的提交。

将目录更改为本地存储库。如果您不是git结账主管,请切换到master分支将父级添加为远程存储库,git remote Add upstream<repo location>向上游发出git fetch发布git上游/主数据库在这个阶段,您可以通过键入gitstatus来检查提交将要合并的内容发布git推送源主机

有关这些命令的更多信息,请参阅步骤3。

我想补充一下@krlmlr的答案。

最初,分叉存储库有一个名为master的分支。如果正在处理新功能或修复,通常会创建新的分支功能并进行更改。

如果您希望分叉存储库与父存储库同步,可以为pull应用程序(在功能分支中)设置一个配置文件(pull.yml),如下所示:

version: "1"
rules:
  - base: feature
    upstream: master
    mergeMethod: merge
  - base: master
    upstream: parent_repo:master
    mergeMethod: hardreset

这将使分叉回购的主分支与父回购保持最新。它通过合并分叉回购的主分支来保持分叉回购的特征分支的更新。这假设功能分支是包含配置文件的默认分支。

这里有两种合并方法,一种是硬重置,这有助于将分叉回购的主分支中的更改与父回购同步,另一种方法是合并。此方法用于合并在要素分支中所做的更改和在主分支中由于强制同步而做的更改。如果发生合并冲突,拉取应用程序将允许您在拉取请求期间选择下一个操作过程。

您可以在这里阅读基本和高级配置以及各种合并方法。

我目前正在这里的分叉回购中使用此配置,以确保此处请求的增强保持更新。