我对 github 社交编码比较陌生,并且在遵循 github 指南时遇到了麻烦。我将尝试描述发生的事情以及我想要实现的目标——希望更有经验的 git 向导可以帮助我弄清楚到达那里所需的街机命令。
- 原始项目:https ://github.com/phatboyg/MassTransit
- 我的叉子:https ://github.com/davidcie/MassTransit
- 平台:Windows,带有 Github for Windows + 它的 PowerShell
发生了什么
- 我在 2012 年7 月分叉了 MassTransit 。当时它的主分支是 v2.1.1 版本,最后一次提交是在 2012 年3 月 29 日。
- 按照 github 的建议,我开始在主题分支上编写一些更改。
- 几次提交之后,当功能完成时,我将我的主题分支合并到我克隆的本地master中,然后将其推送到 github。
- 自2012 年3 月 29 日以来,MassTransit 一直在其开发分支上进行开发。构成 v2.6.0 的所有这些更改最近都与其主版本合并。
我想做的事
我想获得合并到upstream/master的所有更改。最好作为他们各自的提交,而不是数百个文件的大规模提交。因为我在前 上游/主服务器上进行开发(日期为 2012 年 3 月 29 日),我想实际上需要在 3 月 29 日的最后一次上游/主服务器更改和我 8 月 8 日的第一次提交之间“插入”一些提交,并且然后在此之上添加后来发生的那些。我怎么做?
(我也不想在这个过程中破坏我的提交/分叉;-)
我试过的
git checkout master
git remote add upstream git://github.com/phatboyg/MassTransit.git
git rebase upstream/master
git push
但是,它不会让我这样做git push
,抱怨我的本地提示是 10 次提交落后于原点(可能是我在我的主题分支上所做的提交,后来合并到origin/master?)。
建议?
看来我可能被建议咬了。例如。也许创建一个单独的分支会更好,例如。local-master,并将其视为......好吧,我自己的主人。那么master只会在那里与upstream/master保持联系,我偶尔会将origin/master重新设置为upstream/master并与origin/local-master合并...
你们是如何管理你的叉子的?
其他问题
我一直无法找到一种方法来可视化分支历史、哪个分支与另一个分支以及何时合并等等。Github for Windows 仅显示当前所选分支的平面历史记录(这里是悲伤的脸)。该网站确实有一些网络可视化(这里是 MassTransit 的一个),但这感觉比TortoiseHg 中的图表提供的信息要少得多。我错过了一些明显的东西吗?其他人是否只记得什么与什么以及何时合并?
编辑(8 月 31 日)
我正在分享一个穷人的可视化来帮助解释发生了什么。
- 当C1在upstream/master上最新时,我分叉了。
- 然后我在我的origin/feature-1上开发。
- 其中一项功能已完成,我将其与我的origin/master合并。
- 当upstream/mega-feature完成后,它与upstream/master合并,有效地将C2和C3复制到upstream/master。(或者也许upstream/master是用upstream /mega-feature重新定位的?)
- 我现在想将C2、C3和C4复制到我的origin/master。