github协同开发
协同开发
github协同开发(多人共同开发)大致有两种方式:
- 合作者
- 组织
合作者
组织
创建一个组织,组织内的成员可以一起开发多个项目。
怎么协同开发
有两点:
- 所有人不能在dev分支进行开发(如果两人都在同一分支开发,在公司都提交,A晚上回家拉代码下来想测试自己的一部分代码,发现测不了,因为dev还有B的未完成的可能有bug的代码)
- 每个人单独开一个属于自己的分支,开发完毕再合并到dev分支
现在问题来了,A开发完毕,就合并到dev然后push后下班回家,B开发完毕也合并到dev,然后也进行push操作
A把本地dev分支push到github之后高高兴兴地回家了,此时B在merge到dev之后想要push,顿时傻眼了,出错了(A: 哈哈,幸亏我提交的早,第一个提交永远不会出问题)
这时怎么解决?肯定是根据提示先pull下来,在本地合并之后再push推到github。此时又出现一个问题,如果在合并过程中代码如果出现冲突怎么办?解决办法:
- 合并的时候所有开发人员都必须在场,不然B哪知道A的部分,出现冲突后B如果自作主张把A的部分全删了,这明显不行,需要A和B一起来处理冲突
- 合并时间不能太长,如果很长时间合并一次,那么冲突可能就很多,处理冲突就是一个大工程。
代码review: 一般是创建一个review分支,初学者的代码一般是合并到review,经过组长或领导审核通过之后才有可能合并到dev分支。
fork项目
github有很多开源的优秀的代码,如果想要把这些代码也复制一份到我的仓库,那我就可以用来学习或进行二次开发,fork就能帮我们完成这件事。
如果把网上源码fork之后,发现写的有bug,想要提建议,此时就用new pull request
然后等待原作者是否同意这个pull request,如果同意那么在作者的源代码中就推出现我提交的功能
其他
忽略文件
当你提交代码的时候不要把所有的代码都提交,尤其是你一些sql相关的文件(否则别人拿到你数据库地址登进去删库),还有pycharm自动生成的隐藏文件
在和.git同一级目录下,创建一个.gitignore
的文件,里面写上*.sql
,那么git就不会帮我们监测以sql结尾的文件的变化,自然也不会帮我们上传这些文件到github。windows下创建 .gitignore文件:ren .gitignore.txt .gitignore
当然,github已经帮我们写好了python版本的.gitignore文件,我们在创建仓库的时候就可以进行勾选
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
版本相关
我们发现django源码有很多版本,那么我们自己写的代码怎么制作版本呢
想要下载对应版本: git clone -b v1.0 资源地址
git tag -a v1.0 -m '版本介绍' 本地创建Tag
git show v1.0 查看
git tags -n 查看本地Tag
git tag -l 'v1.4.2.*' 查看本地Tag,模糊匹配
git tag -d v1.0 删除Tag
git push origin :refs/tags/v0.2 更新远程tag
git checkout v.10 切换tag
git fetch origin tag V1.2
git push origin --tags
git pull origin --tags