本次主要介绍与实践课程息息相关的小组合作开发,通过github和git可以很好对小组成员的代码进行管理。我邀请刘子义和我分别扮演合作中的项目经理和团队成员两种角色。
首先介绍一下github的主要功能:
(1)Git仓库
(2)Organization(优点是可以统一管理和权限)
(3)Issue(是将一个任务或问题分配给Issue进行追踪和管理,即每当进行Pull Request就会创建一个Issue)
(4)wiki(任何人都可以随时保存一篇文章进行更改并保存)
(5)Pull Request (通过该功能向其他仓库提出申请请求合并,送出后目标仓库的管理者可以查看Pull Request的内容和及其包含的代码更改)
Git和GitHub的关系:
Git的仓库管理是GitHub的核心,Git属于分散型版本的管理系统,是为了版本管理而设计的软件,起因是Linux内核开发中使用的既有版本管理系统的开发方许可证发生了变化。为了更换新的版本管理系统才开发了Git。
版本管理就是管理更新的历史记录,并且版本管理系统分为集中型和分散型。
集中型:将仓库集中存放在服务器上,所以只存在一个仓库,将所有数据集中存放在服务器中,有便于管理的优点,但是一旦开发者所处的环境不能连接服务器,就无法获取最新的源代码,开发也就无法进行。万一服务器故障导致数据消失,开发者就会见不到最新的代码。
分散型:GitHub将仓库Fork给了每一个用户,就是将某一个特定仓库复制到自己的账户下,Fork出的仓库与原仓库是两个不同的仓库开发者可以随意编辑。
双方都有优缺点但是只要规则制定的好分散型也可以向集中型那样进行管理。
利用github和git进行合作开发
Master篇:
一、github端创建仓库
进入初始页面,点击创建项目(Start a project)
Ps:若未显示此页面,点击左上角github图标(猫头)即可
创建仓库,github会自动识别是否存在重名仓库
审核通过,点击创建仓库(Create repository)
创建成功,生产链接
二、利用git向仓库上传文件
用git-hash登录设置
建立本地仓库
使用git自带工具
点击创建仓库
在q1.txt文件处右键add git gui(之后存在重复操作)
上传q1.txt,添加注释“hello,world!”
点击commit
上传至github的仓库
上传成功
等待小组成员的修改操作
@1759132刘子义
小组成员向仓库里创建文件
发出提交请求
允许合并:
更改完成:
@1759126刘子义对文件进行修改操作
允许合并
成员篇:
员工篇:
- 搜索master上传的项目。
在搜索框中搜索项目,格式为 master用户名/仓库名。
- 进入master已经建好的仓库。
点击红色标记处进入仓库
- 拷贝master仓库中的文件。
点击红色标记“Fork”按钮
拷贝结果:员工账号中拷贝了master仓库
- 查看仓库中的文件。
仓库中已有名为ql的txt文件,内容为“hello,world!”
- 员工修改master仓库中的文件。
首先修改员工仓库:点击要修改的文件,进入文件,点击图表
修改:在第二行添加“hello”点击下面的
此时员工仓库的ql文件已修改,现在上传给Boss仓库
- 添加文件
当需要添加一个新文件而不是修改原文件时。先创建一个新的文件
添加文件内容:输入“hello,world”
上传给Boss新的文件:点击完成后上传
更改成功:
附:git结合android studio
使用android studio中的vcs工具初次上传初始代码到一个新的远程仓库。
1、点击AS菜单栏中【VCS】,选择“Create Git Repository”,从而创建出与AS关联该项目的一个本地仓库。
图1
2、点击AS菜单栏中【VCS】,选择“GIT”,接着选择“Remotes...”,至此在弹窗中点击加号新建关联到远程库,在图3的弹窗中,1处的名称要记住了,后面会用到;2处是你远程库的链接地址。
图2
图3
3、选中要上传的项目右击,选择“Git”,在选择“Add”,在选择“Commit Directory......”。
4、在AS的Terminal窗口中输入命令:git branch --set-upstream master origin/master 。此命令中的“origin”就是步骤2中所提到的名称;“ master”为远程库的分支名称。
5、此步是因为远程库中有个"README.md"文件,而你的本地库中没有,所以用此步来合并代码。在AS的Terminal窗口中输入命令:git pull --rebase origin master。此命令中的“origin”就是步骤2中所提到的名称;“ master”为远程库的分支名称。
6、点击工具栏中的同步代码的图标(向上的箭头),要选择"commit and push"。
至此已经将代码同步到了远程库中。