Git 以分支的方式同时管理多个项目
2016-04-08 14:59
375 查看
你是否遇到过这样的问题:
你的客户在你们这边做了N个项目,而项目之间又存在着某些业务关联(数据库访问等)
之前你可能是这样处理的,为客户的每个项目创建单独的Git版本
你是否有想过有其他的解决方法呢?比如在同一个Git仓库对所有项目进行统一管理呢,那么该怎么使用Git来做到统一管理而又不会影响到各项目的工作呢?
当然使用万能的Git分支完全可以满足你这么个性化要求(以分支的形式管理不同项目)
首页你需要分支是必须要创建的吧(对应不同的项目)
那么问题来了,后创建的分支默认是以当前分支为父分支的,像下面这样:"master-dev"的父分支是master
既然Git在创建是默认给我们的新分支指定了父亲,那么可不可以在创建是不需要呢?
强大的Git同样提供了解决方法(创建时提供--orphan 参数即可):git checkout
--orphan 分支名
注意:
尽管创建分支时没有了父分支,但创建成功后,原分支的文件会在创建时添加到当前暂存区的,所以需要移除(不需要的情况下)
然后再将原分支的文件从当前分支仓库中移除,这样你的分支里的文件对于其他分支来说就是独一无二的了(即使不移除原分支的文件,此文件也是新添加到当前分支的,所以跟其他分支没有任何关系)
而其他分支也完全不可能会影响你当前分支的工作(不存在依赖关系的前提下)
当切换到PC分支时,Git仓库里的文件也会发生变化,也就实现了我们的目的
不同的分支其实就是不同的目录和文件,跟其他分支没有关系的
提交记录应该是这样子的
可以看到下面pc分支的提交连接线(蓝色)跟其他的连接线(绿色)是不同的
master-dev是在master上创建的子分支(存在依赖关系)
以同样的方式创建分支mobile,同样没有父亲,git checkout --orphan mobile
然后在不同分支进行模拟提交,那么提交记录就有可能是这样的
应用场景不同,请谨慎使用,否则提交历史将惨不忍睹
最终的Git分支和对应的目录及文件是这样的,现在你可以在一个Git里愉快的玩耍了
技术有风险使用请谨慎
技术有风险使用请谨慎
技术有风险使用请谨慎
重要的事情说三遍
举个栗子:
参考:
百科经验:CMD删除某文件夹下的所有文件夹和文件
git show-branch输出
Git - git-checkout Documentation
你的客户在你们这边做了N个项目,而项目之间又存在着某些业务关联(数据库访问等)
之前你可能是这样处理的,为客户的每个项目创建单独的Git版本
PC项目 手机项目 微信项目 其他项目.... |
当然使用万能的Git分支完全可以满足你这么个性化要求(以分支的形式管理不同项目)
首页你需要分支是必须要创建的吧(对应不同的项目)
那么问题来了,后创建的分支默认是以当前分支为父分支的,像下面这样:"master-dev"的父分支是master
既然Git在创建是默认给我们的新分支指定了父亲,那么可不可以在创建是不需要呢?
强大的Git同样提供了解决方法(创建时提供--orphan 参数即可):git checkout
--orphan 分支名
注意:
尽管创建分支时没有了父分支,但创建成功后,原分支的文件会在创建时添加到当前暂存区的,所以需要移除(不需要的情况下)
然后再将原分支的文件从当前分支仓库中移除,这样你的分支里的文件对于其他分支来说就是独一无二的了(即使不移除原分支的文件,此文件也是新添加到当前分支的,所以跟其他分支没有任何关系)
而其他分支也完全不可能会影响你当前分支的工作(不存在依赖关系的前提下)
当切换到PC分支时,Git仓库里的文件也会发生变化,也就实现了我们的目的
不同的分支其实就是不同的目录和文件,跟其他分支没有关系的
提交记录应该是这样子的
可以看到下面pc分支的提交连接线(蓝色)跟其他的连接线(绿色)是不同的
master-dev是在master上创建的子分支(存在依赖关系)
以同样的方式创建分支mobile,同样没有父亲,git checkout --orphan mobile
然后在不同分支进行模拟提交,那么提交记录就有可能是这样的
应用场景不同,请谨慎使用,否则提交历史将惨不忍睹
最终的Git分支和对应的目录及文件是这样的,现在你可以在一个Git里愉快的玩耍了
技术有风险使用请谨慎
技术有风险使用请谨慎
技术有风险使用请谨慎
重要的事情说三遍
举个栗子:
参考:
百科经验:CMD删除某文件夹下的所有文件夹和文件
git show-branch输出
Git - git-checkout Documentation