我如何重新同步原始分叉

我如何重新同步原始分叉

我刚刚在 Github 上 fork 了一个项目。我做了修改并发送了一个 pull request。所有者将我的 fork 与主项目合并,之后做了一些修改。所以现在我的 fork 还没有随主项目更新。我错过了他合并我的 pull request 后所做的修改。我该如何更新我的 fork 与主项目?有没有办法在 Web 界面上做到这一点?

谢谢

答案1

根据设计,分叉项目会创建一个单独的存储库,当原始存储库更改时,该存储库不会更新。但是,git手动更新非常容易。

您需要第三个存储库的帮助(您的本地副本就足够了)。共有 3 个存储库:

  • “上游”:Github 上的上游项目存储库。
  • “Origin”:你在 Github 上的 fork 仓库
  • “本地”:您计算机上的本地存储库。我假设您通过使用 克隆 Fork 来创建它,并且每个人都在使用 分支。git clone [email protected]:your-username/projectname.gitmaster

假设当前“Origin”和“Local”处于相同状态,并且“Upstream”领先 1 次或多次提交(合并和任何后续更改)。

首先将上游项目添加为Git 远程

git remote add upstream https://github.com/upstream-username/projectname.git

然后拉(意思是拿来进而合并自动将远程master分支中的更改复制到本地存储库的当前(master)分支中:

git pull upstream master

现在你的本地仓库已经与 同步了upstream。最后,将你的本地仓库推送到你的 Github fork 上:

git push origin master

现在一切都同步了。

答案2

您需要添加一个遥控器(参见GitHub 帮助),然后从新的遥控器中拉出。

git remote add mainProject https://github.com/user/mainProject
git pull mainProject master

答案3

我发现这个答案补充原始答案,因为该答案仅涉及同步一个分支(主分支)。此外,如果自从您的 fork 以来,该分支已在上游创建,则在您的 fork 上创建它会更加复杂一些。

简短的回答是,要使用上游存储库中的每个分支更新您的 fork,请执行此命令。

for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git push origin refs/remotes/upstream/$branch:refs/heads/$branch; done

这不会移除已从上游删除的分支。没有办法自动执行此操作,尤其是如果您已在分支上创建分支。

相关内容