gpt4 book ai didi

git - 您如何从 fork 的 github 存储库 merge 非主分支上的更改?

转载 作者:IT王子 更新时间:2023-10-29 01:29:58 27 4
gpt4 key购买 nike

在以下两个 StackOverflow 问题中,接受的答案描述了如何在您 fork 一个 repo、原始 repo 被修改,然后您想 merge 对 master 所做的更改的情况下从一个 fork 的存储库中 merge 更改分支回到你的 fork repo 。

但是,我不清楚您如何在您 fork 的原始 repo 协议(protocol)中保持非主分支的最新状态。例如,当我最初 fork bitprophet's fabric repository ,它包含以下分支:

  • 大师
  • 0.9
  • 0.9-doc-rewrite(不再存在)
  • path-and-#24(不再存在)

最后两个分支不存在了,现在有一个新的分支flexible-task-declarations。我已经获取、 merge 并推送了我的 master 分支,因此 master、origin/master 和 upstream/master 都具有相同的 SHA1 哈希并指向相同的 git 快照。但是,我不确定如何删除不再存在的分支并更新新分支,以便我的分支是最新的。我是否需要跟踪每个上游分支,然后分别获取、 merge 和推送每个分支,还是有更好的方法?

最佳答案

场景一:删除不再存在的分支

要删除不再存在的分支,我按照 StackOverflow 问题 How do I delete a Git branch both locally and in Github? 的答案中的说明进行操作。通过发出以下命令:

$ git push origin :0.9-doc-rewrite
$ git push origin :path-and-#24

场景 2: merge 现有非主分支中的更改

为了使 upstream/0.9 分支保持最新,我执行了以下操作:

$ git checkout --track origin/0.9
$ git fetch upstream
$ git merge upstream/0.9
$ git push

场景 3:跟踪新的非主分支

不确定这是最好的处理方式,但这是我所做的:

$ git branch flexible-task-declarations upstream/flexible-task-declarations
Branch flexible-task-declarations set up to track remote branch flexible-task-declarations from upstream.
$ git checkout flexible-task-declarations
$ git push origin flexible-task-declarations

确认所有分支都在同一个提交中:

$ git branch -av

这将显示所有分支——本地和远程——并显示最新的提交消息和 SHA1 哈希。

可能会阐明处理场景 3 的更好方法的网络研究

A key difference between a Git fork, when compared to either a simple Git clone, or an SVN checkout, is that your fork will never keep itself up to date with the master repo unless you do it. Fortunately, there is a simple tool to help you do this. Your fork is separate and equal to the master in Git terms so if you want to track changes to the master you can create a tracking branch in your forked repo and merge those changes into your fork’s master branch whenever you want to commit something. I highly recommend the ‘GitHub’ gem which is a tool you can install to help you easily track changes in any other repository related to yours. See the README text at the bottom of this page for installation and usage: http://github.com/defunkt/github-gem/tree/master

Ignore the Github Fork Queue It's evil! The fork queue is a tool for maintainers who like to pick single commits from contributors but don't wish to merge in their whole branch. If you play around with the fork queue you will corrupt your fork (it can be fixed though, read Something went wrong). Many newbies on github feel like they should do something with the fork queue because there are a lot of possibly conflicting changes in there and they don't know what is the supposed way of keeping one's fork up-to-date. Read Keeping your fork up to date and find out!

Django 的 Github 工作流程

Django 项目有关于如何 Collaborate on Github 的说明它使用似乎是处理上游更改的 fork 和 pull 的标准方法。

不同的初始 fork 配置

Long Nguyen 的客座帖子题为 Setting up your Git repositories for open source projects at GitHub在 Michael Hartl 的博客上描述了一种有趣的方法来设置您已经 fork 的 Github 存储库。根据文章,此方法的目标是:

  • 保持存储库同步,以便每个存储库都包含完整的“官方”存储库
  • 允许开发者获取官方更新
  • 鼓励在 master 以外的分支上工作

关于git - 您如何从 fork 的 github 存储库 merge 非主分支上的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2014914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com