git同时管理多个项目

缘起


大家在开发的过程中,可能会遇到多个项目同时开发,合并代码的事情。通常的做法是,一个项目建立一个本地链接,也就是说如果有10个项目,我们本地需要10个文件夹来对应,不仅麻烦,而且混乱。同事给了个可视化工具的解决方案,小编呕心沥血搞个命令行的吧。现在,给大家个福利吧,且看下文。

git本地关联多个远程


一个本地文件夹,关联远程多个项目,可以让你在本地自由切换不同的项目,不多说了,上代码。

git remote add local1 git地址
git remote add local2 git地址

上面的local1和local2就是远程关联的本地仓库的别名,之后下面命令查看本地关联的仓库

git remote -v

本地切换当前关联的远程仓库,我们上面的local1和local2虽然各自关联了各自的远程地址,但是git本地会有一个当前激活的关联远程地址,这个地址其实就是我们看到的origin。
大家回忆下,看下面的代码,平时可能大家没有往这方面思考,现在大家按照我的思路来,为啥push和pull不需要知道远程仓库地址,却可以推送和获取相应的代码。其实就是开始做了绑定,origin就是当前对应的远程地址的别名,等于上面的local1和local2,和local1、local2的区别是origin是当前激活的这个远程地址,也是当前默认的远程地址。

git push origin master
git pull origin master

上面只是提到了远程地址关联到本地的别名,那么现在有个需求,假如当前origin等价于local1,需要把当前origin指向local2,然后再进行其他操作,那么按照下面的代码进行操作即可。

git remote set-url origin --push --add 远程仓库地址
// 或者
git remote rm origin
git remote add origin 远程仓库地址

经过上面的操作,本地的origin默认已经关联了local2的地址,也就实现了我们上面所说的git本地一个文件,关联多个远程。

优化流程


上面只是基础版本,但是大家会不会感觉太累了,每次不同项目都要切换origin,下面给大家个升华版本。假设现在的origin在local1上,本地现在是local2上的master,我们需要local2切个test出来

git checkout -b test
git push local2 test
git branch --set-upstream-to=local2/test test

看到这个,你是否灵光一闪呢,origin其实是可以替代的,只是我们习惯用它了,其实只需要让本地git能够区分谁是谁即可。通过上述操作,我们在origin指向local1,但是本地master是local2的情况下,切出来了一个test分支,通过不修改origin,把它关联到了local2上,是不是方便好多啊。

注意点


  • 因为多个项目,难免分支名重复,假如local1和local2都有master分支,通过编辑器(例如vscode),把local1的master切换成local2的master,其实是会报错的,因为本地的master已经存在,这个时候需要进行以下操作。
// 先把分支从master切换成develop等其他分支
git branch -D master
// 然后在通过编辑器获取local2的master到本地
  • 切记不要在local1的分支进行local2的命令操作,这样会报错。
  • 分清楚本地,线上和关联的区别,使用git命令行就会得心应手。
  • 如果需要多个项目进行分支合并,推荐使用git cherry-pick,因为篇幅原因,下次有时间再继续写。

尾声


如果大家觉得命令行太困难,建议使用git可视化工具吧,网上也有好多,具体请百度。
美好的时光就到这里,如果喜欢小编,请大家动动手,转发吧。


版权声明:本文为zjscy666原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。