在github上分叉,那么我如何管理我的贡献?
我对在github上跟随在github上分叉,那么我如何管理我的贡献?,git,github,git-branch,Git,Github,Git Branch,我对在github上跟随fork的forkflow有点不清楚 如果我在一个中等规模的项目(比如OpenGrok)的原始存储库中对各种bug进行了一些独立的小修复,该怎么办 我是否为每个相对较小的无关错误修复创建单独的分支 我是从master创建每个分支,还是从下一个分支创建一个不相关的分支 我是否将修复提交到master 我的意思是,随着时间的推移,我仍然希望保留历史和所有内容,但我只是担心过一段时间后,会出现一个完全混乱的局面,其中有许多毫无意义的分支,用于相对较小的bug修复 我计划为一
fork
的forkflow有点不清楚
如果我在一个中等规模的项目(比如OpenGrok)的原始存储库中对各种bug进行了一些独立的小修复,该怎么办
- 我是否为每个相对较小的无关错误修复创建单独的分支
- 我是从
创建每个分支,还是从下一个分支创建一个不相关的分支master
- 我是否将修复提交到
master
我计划为一个给定的项目提供一些无关的修复,并尝试对开发方法进行一些规划。在github上分叉项目时,有几种可能的工作流,您计划向上游提交更改。这是我通常倾向于遵循的工作流程之一(我将调用我从中分叉的回购协议作为远程
源
,我的回购协议作为源
):
- 将
使用的主分支,比如说source
分叉到master
origin/mydev
是我所有更改和主要开发的地方origin/mydev
- 我经常将
重新设置到remote/master
上(这一步是多余的,但有时我很容易将所有内容都放在一个遥控器中)origin/master
- 只要您想从上游获取更改,就可以将
或重定基址的源代码/master
合并到源代码/master
源代码/my dev
- 如果我想向上游提交补丁或错误修复,我会启动一个新的特性分支,用于pull请求。我将其命名为
。我根据最新的origin/my-feature-1
(或origin/master
)创建此分支source/master
- 我将在
中对此功能所做的更改挑选为origin/my dev
。执行此步骤后的任何测试origin/my-feature-1
- 从
origin/my-feature-1
- 如果拉取请求获得批准,更改将合并到
(以及源代码/主代码
)源代码/主代码
- 执行从
(或origin/master
)到source/master
的合并origin/my dev
- 就分支的生命周期而言,我通常倾向于在上游合并主题或功能分支后,将其删除(分支只是git中引用特定提交的轻量级指针)
origin/my dev
上游贡献D2
和D3
时D2'
和D3'
是D2
和D3
的重基版本。带有U
的提交是source
中的上游提交,D
是您在origin
中的下游提交。带有M
后缀的是合并
从视觉上看,这就是它的外观:
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
| |
| |
我仍然不清楚这里的长期方法是什么:您是否保留这些特性分支?还有,如果它们只是bug修复分支,而不是任何功能,我该如何命名它们呢?此外,当您对自己的主要分支进行重新基础时,您如何保持历史记录/确保您可以在将来的任何时候返回?(我在问,因为有了rebase和fast forward,commit sha1会改变等等。)@cnst-不管它是一个功能还是一个错误修复,同样的工作流可以应用,不管它是什么。最好将您试图修复的bug的分支命名为:
fix deadlock
,fix-397
(如果您正在修复bug编号397)。如果您询问的是origin/master
,您会注意到我没有直接在origin/master
上提交任何内容,并且我从remote/master
进行的所有合并或重定都是快进的,因此我提到了它是多余的。顺便说一句,快进合并不会更改任何提交的SHA1。我所有的提交都进入origin/my dev
中,这样你就不需要origin/master
,对吗?您始终可以从源(远程)/master
创建功能(贡献)分支。