4

我对fork在 github 上遵循 a 的 forkflow 有点不清楚。

如果我在原始存储库中对中型项目(例如 OpenGrok)中的各种错误进行了几个小的独立修复,该怎么办?

  • 我是否为每个相对较小的不相关错误修复创建单独的分支?

  • 我是从创建每个分支master,还是从下一个分支一个不相关的分支?

  • 我是否将修复提交到master?

我的意思是,随着时间的推移,我仍然想保留历史和所有内容,但我只是担心一段时间后,对于相对较小的错误修复而言,许多无意义的分支会变得一团糟。

我计划为给定项目贡献一些不相关的修复,并尝试对开发方法进行一些规划。

4

1 回答 1

4

在 github 上 fork 一个项目并且您计划向上游提交更改时,有几种可能的工作流程。这是我通常倾向于遵循的工作流程之一(我将调用我从中分叉的 repo 为 remote source,我的 repo 为origin):

  • fork 使用的主分支source,比如说masterinto origin/my-dev
  • origin/mydev是我所有变化和主要发展的地方。
  • 我经常重新定位(这一步是多余的,但有时我很容易将所有东西都放在一个遥控器上)remote/masterorigin/master
  • 每当您想从上游获取更改时,合并其中一个source/master或重新设置origin/master为。origin/my-dev
  • 如果我想在上游提交补丁或错误修复,我会启动一个新的功能分支,我可以将其用于拉取请求。我会打电话origin/my-feature-1的。origin/master我根据最新(或source/master)创建此分支
  • 我挑选了我origin/my-devorigin/my-feature-1. 在此步骤之后执行任何测试。
  • 提交拉取请求origin/my-feature-1
  • 如果您的拉取请求获得批准,则更改将被合并source/masterorigin/master也)。
  • 执行从 origin/master(或source/master)到的合并origin/my-dev
  • 就分支的生命周期而言,我通常倾向于在将其合并到上游之后摆​​脱短暂的主题或特性分支(分支只是 git 中引用某个提交的轻量级指针)。

一遍又一遍地重复这个工作流程。

关键思想是你的拉取请求不应该对上游维护者造成任何严重的冲突,否则他/她会盲目地拒绝贡献。

当您想从上游做出贡献时D2,我已经举例说明了一个示例。和是和的变基版本。提交是上游提交,是您的下游提交。带后缀的是合并。D3origin/my-devD2'D3'D2D3UsourceDoriginM

从视觉上看,这就是它的样子:

source/master             origin/my-dev
     U1
     U2   Initial-fork
     U3-----------\
     |             \
     |              \------------D1
     |                           D2
     U4 Sync up from upstream    |
     U5-----------\              D3
     |             \             |
     U6             \------------DM4                        origin/feature-1
     |                           |
     |                           |     Starting point of feature-1
     U7------------------------------------------------------------D2'  (Rebased version of D2)
     |                           |                                 D3'  (Rebased version of D3)
     |                           D5                                /
     U8                          D6      Pull-request             /
     |                           |       getting merged upstream /
     UM9--------------------------------------------------------/
     |                           |
     |              Resync       |
     |-------------\ my-dev      |
     U9             \            |
     U10             \-----------DM7
     |                           |
     |                           |
于 2013-04-05T00:49:14.397 回答