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

 

 

 二:在tempbranch分支上执行cherry-pick,将修改bug的记录同步过来

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

 

 

 

 

 至此,整件事情算操作完毕了。

 

posted on 2022-09-16 12:44  Neo0820  阅读(141)  评论(0编辑  收藏  举报

导航