一、最基本的方式
首先负责人先创建一个仓库,然后在setting里的Collaborators中添加你的队友们。
输入队友们的github用户名,然后匹配到他们,点击添加,然后等待他们接受邀请。这样他们就有进入你的仓库的权限了,在本地将仓库克隆一下,就可以一起愉快的写代码了。
但是,这样比较麻烦,万一队友不小心把仓库东西都给你删了,岂不是很无奈。
二、使用fork
为了让彼此互不影响,可以让队友们将仓库fork成自己的仓库,然后分别进行开发。
1. 队友们点击仓库右上角的fork
2. 然后队友们将fork到的仓库克隆到他们的本地。
3. 给fork配置远程库
- 查看远程状态
git remote -v
-确定一个将被同步给fork仓库的上游仓库
git remote add upstream 上游仓库地址
再次查看状态确认是否配置成功。
4. 同步远程仓库
- 从上游仓库fetch分支拉取数据,并提交给本地master,会存储在upstream/master上
git fetch upstream
- git fetch upstream
git checkout master
- 将upstream/master分支上合并到本地master上,这样就会完成了同步,并且本地内容也不会丢失
git merge upstream/master
- 将本地变动提交到Github的fork
git push origin master
5.将修改反馈给上游仓库
如果fork下来的项目领先或者落后上游分支,可以在网页上进行new pull request,并等待负责人审核是否同意采纳你的修改。
合并中的一些坑点
1. 分工一定要明确
fork这种方式每个人开发时独立的,看起来很友好,但是有时是very unfriendly,当我们将分支merge的时候,比较容易出现冲突,导致merge无法自动完成,我们必须手动来处理这些冲突。
我们开发的时候,分工一定要明确,不能让两个人都对一个文件进行操作,因为这样肯定会发生冲突。
2. 最好要忽略一些特殊的文件
这次开发的项目用IDEA来写,创建每个项目的时候会自动生成.idea文件,里面有些文件,比如workspace.xml,这个文件只要有改动在合并肯定会产生冲突,因为修改文件时工作环境一定会产生变化,所以在git push时,将.idea忽视即可,这样可以防止冲突的发生。修改仓库中.gitignore 文件,在里面加入:
*.idea/
ib文件夹中的jar文件也不会被上传,.gitignore默认是被忽视的,当我们项目在开发阶段,建议不上传这些文件(如果不忽视的话,每次pull和push都特别慢);到后期不需要经常变动,可以将所需的jar文件放上去。
项目中没有.idea/导致我们导入项目需要自己配置开发环境,比如web中设置JDK、源文件、资源文件、web目录、配置各种框架和web容器等,也不是很难,比一直发生冲突要好。
写在最后
如果在github上看到自己比较感兴趣的项目可以fork下来,然后自己在本地配置好环境将项目跑起来,看看能不能找出一些bug甚至修复这些bug,然后通过issues或者pull request反馈给仓库的所有者,为开源项目贡献自己的一份力。