文档章节

git@osc中协作开发、复制项目、贡献代码

ooad
 ooad
发布于 2015/01/06 09:57
字数 1550
阅读 4.6K
收藏 18

git@osc可以让我们托管代码,进行版本控制,同svn等类似平台一样,可以帮助我们实现团队协作开发,无论你是否是项目团队成员。本教程完全适用GitHub

1. 概念

协作开发:顾名思义,就是由多个项目成员共同开发一个项目。

fork:GitHub提供非常方便功能,可以一键将其他人的项目复制到自己账号下。

pull request:非项目成员贡献代码一种方式。

2. git@osc如何协作开发

由项目创建者进入指定项目,在菜单栏上点击“设置”,会看到如下界面

然后点击“添加成员”

在用户栏中,输入成员名称,这块我总觉得有点诡异,下午同事刚刚注册了一个git账号,然后我在此处尝试了各种办法怎么也搜索不到指定用户,大概过了能有2个小时后,有神奇般的能搜索到了,我怀疑git@osc后台做处理了?或者账号注册后有生效时间?不管怎么样,在这块输入要找的用户名即可,比如:我要添加一位叫“杨小杨”的同学,输入“杨小杨”是找不到的,但输入他的账号邮箱“yangshuangjun”就可以找到,截止到目前,我还是没有摸清这个搜索用户的路数。

找到成员后,分配角色,一个是管理员、一个是开发者

这两个角色的区别详见这里:http://git.oschina.net/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9

ok后,点击添加用户即可

随后,这个项目成员通过egit客户端直接clone项目,修改并提交代码,实现协作开发。

3. git@osc的fork功能

什么情况下使用fork?

当你对某个公开的开源项目感兴趣,你可以通过fork功能方便地将该项目复制到你的账号下,以便学习或者贡献代码。

首先找到你想要的项目,比如:

点击上图右上角的Fork按钮,确认后,该项目就会跑到你的名下了。意思是你对该项目做了一个分叉,相当于OO里边的继承。

此时,利用egit将该项目import至eclipse工程中,然后你可以修改代码,然后commit and push来更新,就像你自己的项目一样。


4. git@pull request功能

什么时候使用pull reques呢?

使用pull request前提条件是你fork他人代码,并进行了修改。当你修改代码并commit后,只能push到你账号下的该项目,原项目并不会得到任何改变。此时,如果你想把你的代码贡献到原项目中,那么,此时就需要使用pull request操作了。

见下图:点击这里来创建一个pull request

点击后,见下图:

此处无非就是将你提交(贡献)的代码做一下详细的说明,让原作者充分了解你此次提交的目的。

编写完毕后,点击“提交 pull request”即可,截止到目前,你已经做完了pull request的创建工作;

此时,原项目就会收到一个pull request的申请,在这里会有显示

由于我这里没有实际的请求,所以显示的是0,如果有的话,点击pull requests

然后就会在界面上显示详细信息,包括:pull request的标题、详细描述以及详细的代码。

在该界面上,管理员可以选择“接受pull request”,如果选择 接受 的话,那么你所提交的代码将会自动合并到原项目中,也就完成了你的贡献。

5. fork后同步原作者修改

当你fork一个项目后,如果原作者更新了代码,此后你的项目是肯定不会自动更新的。那如何让fork的项目与原项目同步呢?简单的方法当然是再clone一份,不过这样会丢失你对代码修改。

此时,你需要手工同步原项目。

首先进入到clone你fork的项目的本地库

为了与原项目同步,首先需要将原始项目fetch到本地。

git remote add origin https://github.com/xxx/xxx.git #别名origin,指向原始项目
git fetch origin master #fetch orginal下面的master分支

git fetch命令不会自动merge。

然后比较本地的master分支和origin/master分支的差别,然后决定是否进行合并。可使用merge命令进行合并。

git merge origin/master #将原项目和主项目合并

当然,我们也可以不用fetch命令,直接用pull命令,差别在于pull命令会自动merge

git pull origin master

get pull命令其实相当于git fetch 和 git merge

在实际使用中,git fetch更安全一些。因为在merge前,我们可以查看更新情况,然后再决定是否合并。

合并后再使用git push命令提交。

第一次push的时候,可能会出现上述的permission denied错误提示,原因是你没有为你的项目添加一个public key。

接下来我们为本机添加一个。



复制id_rsa.pub里面的内容,进入项目主页,点击“Admin”按钮,选择“Deploy Key”,点击“Add deploy key”,将复制的内容粘在里面,如图:

添加完public key后,现在就可以push了。

结束语

使用git@osc可以有效帮助我们实现协作开发。团队成员可以通过授权直接提交代码,非团队成员可以fork他人的项目,可以使用pull request贡献代码,当fork的原始项目有更新时,也可以手动同步项目。

参考资料

[1] 凯哥.git@osc中team开发、fork和pull request的用法.http://my.oschina.net/kzhou/blog/150290

[2] Gevin.github上fork别人项目后如何与源项目保持同步.http://gevin.me/370.html

本文转载自:http://my.oschina.net/kzhou/blog/150290

ooad
粉丝 93
博文 23
码字总数 17507
作品 0
广州
私信 提问
加载中

评论(0)

U盘或邮件审核代码作业太繁琐?你该试试 Git 分支 | 码云高校版最佳实践

作者介绍 高校的传统软件工程实践教学方式,即学生在实验室编写好代码,通过使用U盘拷贝或者QQ邮箱的方式发送给教师审核代码,过程繁琐且易出问题。而在码云使用 Git 分支之间互不影响,成员...

码云Gitee
2018/09/17
0
0
TeamCat/Teamcat

Teamcat 项目介绍 Teamcat的项目管理包含了任务、提测、Bug管理,统计分析等功能。支持多成员协作,并且深度集成了持续集成(CI)。Teamcat 支持每日构建,自动化测试,一键部署等功能。 Te...

TeamCat
2018/10/31
0
0
skyzhang2006/Teamcat

Teamcat 项目介绍 Teamcat的项目管理包含了任务、提测、Bug管理,统计分析等功能。支持多成员协作,并且深度集成了持续集成(CI)。Teamcat 支持每日构建,自动化测试,一键部署等功能。 Te...

skyzhang2006
2018/10/31
0
0
如何将 GitHub 项目导入码云?一步搞定!

码云(Gitee.com)是开源中国出品的 代码托管·协作开发 云平台,汇聚了国内众多优秀开源项目。历经 5 年打磨与沉淀,已有超过 200 万开发者选择码云,托管项目超过 300 万。我已经有了GitHu...

码云Gitee
2018/06/05
0
0
码云全面改版:新界面新态度,更一致的体验

码云全面改版上线,新界面新态度,一起见证码云产品的匠心凝聚! 码云的此次改版将全面加强基于团队协作开发的交互式体验,提升用户内容获取效率,并在整体风格上进行统一规划,增加了代码片...

两味真火
2017/02/27
8.4K
64

没有更多内容

加载失败,请刷新页面

加载更多

略谈分布式系统中的容器设计模式

本文作者:zytan_cocoa 略谈分布式系统中的容器设计模式 谭中意 2020/3/5 前言:云原生(Cloud Native)不仅仅是趋势,更是现在进行时,它是构建现代的,可弹性伸缩的,快速迭代的计算网络服...

百度开发者中心
03/11
10
0
创建将T约束为枚举的泛型方法 - Create Generic method constraining T to an Enum

问题: I'm building a function to extend the Enum.Parse concept that 我正在构建一个函数来扩展Enum.Parse概念, Allows a default value to be parsed in case that an Enum value is ......

javail
今天
31
0
使用PHP的“注意:未定义的变量”,“注意:未定义的索引”和“注意:未定义的偏移量”

问题: I'm running a PHP script and continue to receive errors like: 我正在运行PHP脚本,并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\\wamp\\www\\mypat......

技术盛宴
今天
8
0
算法 : 一个整形一维数组,以及一个目标数,写一个方法,求出数组元素之和为该目标值的所有组合。

一个整形一维数组,以及一个目标数,写一个方法,求出数组任意两个元素之和为该目标值的所有组合。 function meetGroup($array, $hit){ $meet_groups =[]; foreach ($array as $...

冻结not
今天
35
0
win10下docker中安装sqlserver并使用navicat premiun连接

搜索镜像:docker search mssql 下载镜像:docker pull microsoft/mssql-server-linux 运行镜像:docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=[包含大小写字母、数字的长度不少于8位数的......

nie_yuange
今天
28
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部