首页 > 解决方案 > GitHub 处理多拉请求的更好方法?

问题描述

我一直在使用一个开源项目,该项目需要将所有拉取请求 (PR) 推送到主分支。在发布新版本之前,不会合并所有 PR。假设我已经推送了一个 PR,并且想与一个新的 PR 合作。我需要删除前一个的所有代码。由于项目要求,我无法创建新分支。但是,如果我对这些代码做任何事情并推送到我的 fork,它会立即反映到我之前的 PR。为了避免影响,我必须先删除我当前的 fork,然后再 fork 新的 PR。它对我有用,但需要很多步骤,非常令人沮丧并且很难重新使用以前的 PR。

有更好的办法吗?谢谢

标签: gitgithubgitlab

解决方案


过程中可能存在误解。您应该打开一个拉取请求以将分支合并到 master。您要合并的分支应该是主分支。它应该是一个主题分支。请记住,合并需要两个分支:源分支和目标分支。

在拉取请求的情况下,目标分支是主分支。源分支不应该是你的 fork 中的主分支。它应该是你 fork 中的一个主题分支。

正确的流程是:

  1. 将原始存储库的 master 分支中的最新内容拉入 fork 中的 master 分支

    # Configure remote from where you forked your repo (do this only once)
    git remote add upstream https://github.com/foo/bar.git
    
    # Do these steps before starting on a new feature
    git fetch upstream
    git checkout master
    git merge upstream/master
    git push origin HEAD
    
  2. 在你的 fork 上从 master 创建一个主题分支
    git checkout -b feature master
    
  3. 尽可能多地工作和承诺
    git commit -m "..."
    
  4. 将您的主题分支推送到 GitHub 上的 fork
    git push origin -u HEAD
    
  5. 在原始存储库上提交拉取请求,以将 fork 中的主题分支合并到其存储库上的主分支

对您认为必要的尽可能多的拉取请求重复步骤 1-5。

拉取请求中的历史记录应该很明显,您的主题分支是否是最新的。如果他们的存储库要求您将您的master 合并到他们的master 以进行拉取请求,那么他们的流程就会中断。他们做错了,正是出于您在 StackOverflow 上提出问题的原因。


推荐阅读