Github 怎么设置多人校企合作课程设置

Git 多人合作、分支管理 - 简书
Git 多人合作、分支管理
在项目的开始,项目的发起者构建起一个项目的最原始的仓库,我们把它称为origin,例如我们的Una项目,origin就是这个项目的源仓库了。
源仓库的有两个作用:
1、汇总参与该项目的各个开发者的代码
2、存放趋于稳定和可发布的代码
源仓库应该是受保护的,开发者不应该直接对其进行开发工作。只有项目管理者(通常是项目发起人)能对其进行较高权限的操作。
开发者仓库
上面说过,任何开发者都不会对源仓库进行直接的操作,源仓库建立以后,每个开发者需要做的事情就是fork一份源仓库,作为自己日常开发的仓库。
每个开发者所fork的仓库是完全独立的,互不干扰,甚至与源仓库都无关。每个开发者仓库相当于一个源仓库实体的影像,开发者在这个影像中进行编码,提交到自己的仓库中,这样就可以轻易地实现团队成员之间的并行开发工作。而开发工作完成以后,开发者可以向源仓库发送pull request,请求管理员把自己的代码合并到源仓库中,这样就实现了分布式开发工作,和最后的集中式的管理。
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch &name&
切换分支:git checkout &name&
创建+切换分支:git checkout -b &name&
合并某分支到当前分支:git merge &name&
删除分支:git branch -d &name&
分支(Branch)
分支是git中非常重要的一个概念,也是git这一个工具中的大杀器,必杀技。在其他集中式版本管理工具(SVN/CVS)把分支定位为高级技巧,而在git中,分支操作则是每个开发人员日常工作流。利用git的分支,可以非常方便地进行开发和测试,如果使用git没有让你感到轻松和愉悦,那是因为你还没有学会使用分支。不把分支用出一点翔来,不要轻易跟别人说你用过git。
在文章开头的那张图中,每一个矩形内部纷繁的枝蔓便是git的分支模型。可以看出,每个开发者的仓库都有自己的分支路线,而这些分支路线会通过代码汇总映射到源仓库中去。
我们为git定下一种分支模型,在这种模型中,分支有两类,五种
永久性分支
master branch:主分支
develop branch:开发分支
临时性分支
feature branch:功能分支
release branch:预发布分支
hotfix branch:bug修复分支
永久性分支
永久性分支是寿命无限的分支,存在于整个项目的开始、开发、迭代、终止过程中。永久性分支只有两个master和develop。
master:主分支从项目一开始便存在,它用于存放经过测试,已经完全稳定代码;在项目开发以后的任何时刻当中,master存放的代码应该是可作为产品供用户使用的代码。所以,应该随时保持master仓库代码的清洁和稳定,确保入库之前是通过完全测试和代码reivew的。master分支是所有分支中最不活跃的,大概每个月或每两个月更新一次,每一次master更新的时候都应该用git打上tag,说明你的产品有新版本发布了。
develop:开发分支,一开始从master分支中分离出来,用于开发者存放基本稳定代码。之前说过,每个开发者的仓库相当于源仓库的一个镜像,每个开发者自己的仓库上也有master和develop。开发者把功能做好以后,是存放到自己的develop中,当测试完以后,可以向管理者发起一个pull request,请求把自己仓库的develop分支合并到源仓库的develop中。
所有开发者开发好的功能会在源仓库的develop分支中进行汇总,当develop中的代码经过不断的测试,已经逐渐趋于稳定了,接近产品目标了。这时候,我们就可以把develop分支合并到master分支中,发布一个新版本。所以,一个产品不断完善和发布过程就正如下图:
注意,任何人不应该向master直接进行无意义的合并、提交操作。正常情况下,master只应该接受develop的合并,也就是说,master所有代码更新应该源于合并develop的代码。
暂时性分支
暂时性分支和永久性分支不同,暂时性分支在开发过程中是一定会被删除的。所有暂时性分支,一般源于develop,最终也一定会回归合并到develop。
feature:功能性分支,是用于开发项目的功能的分支,是开发者主要战斗阵地。开发者在本地仓库从develop分支分出功能分支,在该分支上进行功能的开发,开发完成以后再合并到develop分支上,这时候功能性分支已经完成任务,可以删除。功能性分支的命名一般为feature-,为需要开发的功能的名称。
举一个例子,假设我是一名PingHackers网站的开发者,已经把源仓库fork了,并且clone到了本地。现在要开发PingHackers网站的“讨论”功能。我在本地仓库中可以这样做:
step 1: 切换到develop分支
&&& git checkout develop
step 2: 分出一个功能性分支
&&& git checkout -b feature-discuss
step 3: 在功能性分支上进行开发工作,多次commit,测试以后...
step 4: 把做好的功能合并到develop中
&&& git checkout develop
# 回到develop分支
&&& git merge --no-ff feature-discuss
# 把做好的功能合并到develop中
&&& git branch -d feature-discuss
# 删除功能性分支
&&& git push origin develop
# 把develop提交到自己的远程仓库中
这样,就完成一次功能的开发和提交。
release:预发布分支,当产品即将发布的时候,要进行最后的调整和测试,这时候就可以分出一个预发布分支,进行最后的bug fix。测试完全以后,发布新版本,就可以把预发布分支删除。预发布分支一般命名为release-*。
hotfix:修复bug分支,当产品已经发布了,突然出现了重大的bug。这时候就要新建一个hotfix分支,继续紧急的bug修复工作,当bug修复完以后,把该分支合并到master和develop以后,就可以把该分支删除。修复bug分支命名一般为hotfix-*
release和hotfix分支离我们还比较遥远。。
上面大体介绍了git多人合作的思路,下面是具体步骤
一、基本设置
1、github相关
注册github,创建仓库,配置SSH Key
&1&注册github(不必多说)
&2&创建仓库
可以创建public和private仓库,当然private需要掏钱。
一般我们只需要创建public 仓库,需要配置README和忽略文件,以及开源协议
&3&配置SSH Key,只有配置他之后,你的电脑才能和github相关联。以下为具体步骤:
(1)使用ssh-keygen命令生成key pair:
$ssh-keygen -t rsa -C "${YourEmail}"
# "-t rsa"表示使用密钥的加密类型,还可以为dsa;-C设置注释文字,比如你的邮箱“YourEmail”,不一定要是github注册邮箱
Enter file in which to save the key (/Users/faner/.ssh/id_rsa): # 直接回车
Enter passphrase (empty for no passphrase):
# 输入密钥文件授权密码
Enter same passphrase again:
# 确认密钥文件授权密码
Your identification has been saved in /Users/faner/.ssh/id_rsa.
Your public key has been saved in /Users/faner/.ssh/id_rsa.pub.
(2)此时,敲入ls命令可以看到ssh-keygen在~/.ssh目录下生成的public/private key pair,其中id_rsa为密钥对中的私钥,需妥善保管;id_rsa.pub为密钥对中的公钥,可任意公开。
RSA是一种支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。DSA(Digital Signature Algorithm,数字签名算法)是一种标准的DSS(数字签名标准)。
id_rsa私钥类似keychain进行CSR时生成的private key;id_rsa.pub公钥则类似CSR申请下来的开发证书(在Apple Member Center中有在线备案)。
通过cat命令可以查看id_rsa.pub内容。
*git checkout develop
只有这样你的xcode和终端的命令才保持一致
(3)github上,进入setting,打开SSH key进行设置就OK了
2、Xcode相关
(1)clone远程源仓库
终端进入存放代码的目录,使用以下命令clone。注意此时你clone下来的是github上整个文件夹
git clone "remote address"
(2)创建新项目,放到clone下来的文件夹下
进入本地仓库目录
cd 项目同级目录
切换到develop分支,此时已经从远程拉取develop分支
git checkout develop
将本地新项目提交到本地develop分支
git commit -m "初始化项目"
此时本地develop分支已经有你新建的项目,上传到远程develop分支。
这里可以使用Xcode自带的push功能,push到远程develop分支
至此,项目已经初始化完成。。
至于实际开发中如何正确操作,可以参考实例演练
3、实例演练
举一个例子,假设我是一名网站的开发者,已经把源仓库fork了,并且clone到了本地。现在要开发网站的“讨论”功能。我在本地仓库中可以这样做:
step 1: 切换到develop分支
&&& git checkout develop
step 2: 分出一个功能性分支
&&& git checkout -b feature-discuss
step 3: 在功能性分支上进行开发工作,多次commit,测试以后...
step 4: 把做好的功能合并到develop中
&&& git checkout develop
# 回到develop分支
&&& git merge --no-ff feature-discuss
# 把做好的功能合并到develop中
&&& git branch -d feature-discuss
# 删除功能性分支
&&& git push origin develop
# 把develop提交到自己的远程仓库中
这样,就完成一次功能的开发和提交。
这是用终端操作,使用xcode自带功能会更方便。
4、合并远程master和develop分支
前提条件是本地代码已经全部提交到远程develop分支;
首先在本地的develop分支pull远程develop代码;
切换到master分支,从远程pull代码,将develop分支合并到本地master分支(此时本地master分支是与远程同步的),有冲突解决,没有则罢。
最后push到远程master仓库。
Git全面教程 简介 Git分布式版本管理系统。 Linus在1991年创建了开源的Linux,但是一直没有一个合适的版本管理工具,在2002年以前,世界各地的志愿者都是通过把源代码文件通过diff的方式给Linus,然后他本人通过手工的方式进行合并代码。后来在2002年B...
个人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协作模式,直到有一天我看到了下面的文章,好多遗留在心中的困惑迎刃而解,于是我将这部分资料进行整理放到了github上,欢迎star查看最新更新内容, https://github.com/xirong...
小猪的Git使用总结 目录 [TOC] 概述: 接触Git也些年头了,对于Git的使用也算是略有心得,想着出于自己日后回顾,也便于他人查阅学习的目的,遂有此文,相信看完此文你的Git使用会更进一步,谢谢~ PS:有些童鞋曾私信问我为什么有图形化的Git工具还要学命令行,原因...
每个团队的开发流程各式各样,在工作中如何运用好git并不轻松。这个章节就尝试探究一下在公司团队中最最常用的git工作流。 在你阅读的时候,记住这些开发流主要用来做参考,而不是必须严格遵守,我们只是想展示主流的各种开发工作流让你了解,你应该融汇贯通的运用它们,并形成一个适合你...
多种多样的工作流使得在项目中实施Git时变得难以选择。这份教程提供了一个出发点,调查企业团队最常见的Git工作流。 阅读的时候,请记住工作流应该是一种规范而不是金科玉律。我们希望向你展示所有工作流,让你融会贯通,因地制宜。 这份教程讨论了下面四种工作流:1.中心化的工作流2...
听着魏如萱的《香格里拉》 回到高三三楼靠窗的位置 每一个紧张不安的早晨 从没数完的老台阶; 借口上厕所的晚自习
没戴眼镜的模糊星空; 迷恋的黑色T恤 整齐干净的眉毛; 塞上耳机就拥有整个世界 依赖音乐的捉摸不透的灵魂; 明亮却又黑压压的头顶灯光 谁顺手发下来的试卷; 饮水...
人生,难免会有成功与失败、顺境与逆境。顺境时,把自己适时“归零”,可以戒骄戒躁,消除“骄娇”二气,不把成功和顺境当“包袱”背起来;逆境时,固然会失去很多,但能够在失去时勇于“归零”,才能重新面对自己,从头开始,积极奋斗。
就像春节前的大扫除,把那些没用处的东西清...
这封信已经想了一月有余,恰好今夜又来了兴致,所以决定续写完这封信。夜风微凉,赶走了白日的燥热。今晚的星空也很美,星星很亮,突然来了兴致,想给你写封信。 见多了周围情侣的分分合合,真真假假,也早就过了相信爱情的年纪,可是心里却依然还会有期待。可能这是每个女生的梦吧。我不知道M...在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
前辈好,其实我一直以来都只把github当做一个可以公网访问我的网页的一个工具。。 = =。
我对github的熟悉度,我只会pull自己的仓库代码,提交代码,公网访问,还有下载别人的仓库代码。。。我觉得我这样子是严重有问题的 = =
所以我想请问一下前辈,比如说,现在我要和我同学一起写同一个页面,我写页面的上部分,他写页面的下部分,请问到底这个合作开发流程要怎么操作???
我是这样想的,我写我的部分,他写他的部分,那他肯定有他的css文件夹,还有img文件夹等等啊,那他提交上来不就覆盖了吗?还有css那部分肯定会有命名重复情况发生吧??
请问前辈,正确的合作姿势究竟是怎么弄的??
打扰了,望指导!
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
一般协作的时候没有分这么细的,一个人写上半段,一个人写下半段,而是每个人各自负责一个模块/文件夹,公共的部分也是指定其中一个人单独负责,这样在合并的时候就不会有冲突,如果非要在同一个模块或文件上共同操作,就要采用各自编写分支,最后再合并的策略了,但是这种情况我一般会避免,因为解决冲突往往比较费事,也容易出错,分支多了也很难管理,如果项目规模不大,没必要这么折腾。
再补充一句,如果真的有一个人写上半段,一个人写下半段的情况,那你要看一下是不是在项目的组织与分割上出了什么问题,这个文件/模块是不是需要被进一步分割。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这本书还可以。新手更要看书,不然出错次数太多了。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
多update,多commit,有冲突就merge,完事儿
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你去看一下Git,Git可以解决你描述的问题。你们在同一个分分支开发就可以了,然后你同事把改完的代码提交到远端,你pull下来就可以了,如果出现冲突了,解决一下就好,你再push你的代码到远端,你同事再pull下,这样代码就可以相互依赖使用,而不会出现你说的覆盖的问题
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
git的多人协作使用有各种方式,可以参考gitflow流程(根据参与开发人数与项目复杂度可以适当简化流程)
同名文件夹不会有覆盖,会合并文件夹。
同名文件也不会覆盖,首先git会扫描文件改动,尝试执行合并(merge)。如果不能自动合并,会提示你文件冲突(conflict),此时后来者pull后需要手动编辑文件查看双方修改,处理完冲突并commit,然后再push。如果可以自动合并,也要注意极特殊情况下可能出现错误的自动合并,因此需要做好测试工作。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
兄弟,如果是这样,我这里有一些进阶的git的东东.常用的git用来做管理哈,其中有branch开发,issue就是问题,也可以设置里程碑来进行开发,可能用的很多的就是用branch开发,用tag来申明版本.像普通的,一般就把git当成svn来用.完全提现不了git的魅力.给你一本,哈哈,看不懂哈,其实还有一本.额,加班去了.....
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
说的是github的pull request功能吧。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
来看看这篇文章,gitflow 工作流
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
最好要有一个分支,代码提交在分支上,刚开始创建的项目一般是在master上,有冲突的话可以merge,rebase等操作,这些在需要去学习下,不难
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你不是不了解github,你是不了解git
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。18:04 提问
C# 如何进行多人合作开发
实践周,5个人完成一个项目,如何进行有效的分工合作开发。
比如一个窗体,在vs里拖控件形成的控件代码会保存在Form.Designer.cs中,能不能每个人分别建立一个Form.Designer.cs,各自拖控件就能形成界面(用partial把窗体类分块,在vs里没有窗体设计器),这样后期也分得清谁负责的部分
其他部分的合作也不知道该怎么弄,知道的也可以说一下。
按赞数排序
用源代码管理,比如git或者tfs,它能自动合并修改。不需要用parital。
1、框架设计,如果是前端程序可参考MVC设计模式,面向接口编程,可以很好的解决多成员开发互相之间的干扰
2、分析功能模块,包括前端表现,底层的数据、资源管理等;
3、根据组员能力,资源管理和数据管理可分配给熟悉底层操作的同学完成,要求他们写好接口,其他人在做界面操作需要使用时配合调试
4、前端功能模块,能力强的一个人负责各组件及功能的整合以及工程管理,其他人可按照显示界面划分负责部分,比如菜单功能、图片展示、
视频展示、搜索功能;
5、各自结构初步完成时,就可以开始整合拼接界面。
代码管理可使用 上两位提到的工具,推荐 git、svn 也可以用perforce(新手不太容易上手)
分工的层级应该大小合适,5个人各自负责几个窗体。
比如甲负责欢迎界面,乙负责登录界面.......,不必要单个窗体还几个人参加放置控件。
另外,这类实践项目不至于复杂到需要5个人编码,可以安排1到2人撰写文档、报告、ppt等,这部分工作也非常重要。
至于协作,可以试用 tortoisegit,轻量级git软件,易学好用。
下载地址是:
重点在分工,分工好才能合作好。
如果对您有帮助,请采纳答案好吗,谢谢!
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐拒绝访问 | www.ggdoc.com | 百度云加速
请打开cookies.
此网站 (www.ggdoc.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(4394-ua98).
重新安装浏览器,或使用别的浏览器IOS多人协作开发的解决方案?
[问题点数:40分]
IOS多人协作开发的解决方案?
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|

我要回帖

更多关于 千牛怎么设置合作快递 的文章

 

随机推荐