git针对多远程仓库的管理(二)
之前已经说过了管理2个远程仓库的案例,这里会讲到3个远程仓库的案例。那么这个差别在哪里?
如图,通过fork别人的项目创建了自有的远程仓库,代号是giteemine。作用是可以把本地一些可以共享的commit提交到这个自有远程仓库。这样部分共享的commit就可以通过自有的远程仓库创建pr提交给gitee他人的远程仓库。又可以在私有gitlap远程仓库保持有一定的独立性。私有gitlap远程仓库包含了本地仓库的所有commit。
通过git查看目录对应的3个远程仓库:
上面的管理源自于下面的诉求:
1.想把本地仓库的上面5个commit推送到私有的gitlap仓库。
2.只想把中间红框部分的1个commit(修正的bug)推送给他人的官方仓库。
操作步骤如下:
一、本地仓库先建一个临时分支,用于附加这个commit。
创建的分支命名为tempbranch,那么这个分支最后一个commit就是“优化头像显示”。并把当前分支切换到
tempbranch
。
二:在
分支上执行cherry-pick,将修改bug的记录同步过来tempbranch
git cherry-pick commit的Id
找到原来分支上的commitid
执行的语句就变成了
git cherry-pick 54668a111e7798eddf8b50589f3b4272eebfb25f
执行完毕后,临时分支就有了这个commit
三:fork出自有的远程仓库。
他人的官方远程仓库
fork出来的自有远程仓库
四、把本地tempbranch分支的commit推送到fork出来的远程仓库中。
有两种办法:
办法一、直接通过GitHubDesktop的推送到fork出来的远程仓库中,
这种处理办法有个缺点,因为没得选择同步到远程仓库的分支,所以push后发现fork出来自己的远程仓库多了一个tempbranch
分支,然后git cherry-pick的commit也是在这个分支中,如果master要最新,还要自己操作做一次合并。
办法二:通过IDEA的Push操作,可以指定一个自有远程仓库的master远程分支进行推送
或者用命令行的形式
git push <远程仓库名> <本地分支名>:<远程分支名>
五:把自有远程仓库最新的commit 通过Pr提交给远程的官方仓库
看到最新的commit了
提交成功后,在官方仓库看见了我们提交过去的Pr
至此,整件事情算操作完毕了。