如何拆分有依赖的PR?

参与开源的时候,需要我们提交PR。但是一次修改可能涉及到太多功能点的修改,因此需要对commit记录拆分PR。但是这些PR很难不依赖前面的提交,这时候我们该如何处理呢?是等开源团队每次合并一条PR,再提交新的PR吗?

阅读 2.9k
2 个回答

看看這几篇文章
https://www.v2ex.com/t/798431
文章一思路:
方法一:
从 master 分支拉出三个需求分支,提出三个 PR,目标分支都为 master ,代码提交分别是:

master
  \ \ \
   \ \ -> A (PR1: A..master)
    \ --> B (PR2: B..master)
     ---> C (PR3: C..master)

方法二:
从 master 分支只拉出一条分支,但是基于该个人分支再拉分支,最后提出三个 PR,但是目标分支各不一样,提交图如下:

master
      \
       -> A (PR1: A..master)
           \
            -> B (PR2: B..A)
                \
                 -> C (PR3: C..B)

方法三:
先从 master 分支拉出一个dev分支,然后在dev分支上完成所有需求。接着,从dev拉出单独的需求分支,这些分支只包含相应需求的改动。最后,把这些单独的需求分支提交 PR。

master
      \
       -> dev
          \
           -> A (PR1: A..master)
           -> B (PR2: B..master)
           -> C (PR3: C..master)

https://medium.com/@groksrc/protip-how-to-split-large-branche...
https://www.cnblogs.com/netry/p/git-split-large-pr.html

在提交 PR 的时候,如果修改涉及多个功能点或多个代码文件,可以按照每个功能点或文件分别提交单独的 commit,然后将这些 commit 合并到一个分支中,再提交一个合并后的 commit 作为 PR。这样就能够达到拆分 PR 的效果,并且保留每个功能点或文件的修改记录。

在实际操作中,可以使用 Git 的 rebase 和 squash 命令来实现对多个 commit 的合并和压缩。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏