请教上传代码到github 上传的步骤

您所在的位置: &
如何在GitHub上协作开发开源项目?
如何在GitHub上协作开发开源项目?
核子可乐译
GitHub已经成为众多大型开源项目的立足之地,允许来自全球的开发人员共同协作、做出贡献。但我们要如何才能加入到项目中来并做出自己的贡献?本文中,我们将共同讨论开源项目合作过程中的通用规则,并介绍一些大家可能会涉及的知识及灵感。
【日 51CTO外电头条】&也许很多朋友还不太了解,可以作为一种非常高效的项目开发协作机制。在任何拥有互联网连接的区域,开发人员都可以随时与全世界自由共享代码成果(更不必提强大的工具支持、提交历史源检查以及便捷的查看方式)。GitHub已经成为众多大型开源项目的立足之地,允许来自全球的开发人员共同协作、做出贡献。
但我们要如何才能加入到项目中来并做出自己的贡献?当然,相信大家已经了解如何利用Git来追踪文件变更并将文件推送到服务器端。不过对于大型开源项目而言,GitHub还能带来其它一些更为显著的助力,这也使GitHub成为最为理想的项目温床。在今天的文章中,我们将共同讨论合作过程中的通用规则,并介绍一些大家可能会涉及的知识及灵感。
从小处入手
不要抗拒从小处入手
在着手进行开源项目协作之初,最重要的一点在于正确认识自己的角色定位。通常情况下,很多工作完全可以由我们自己独立完成而不必劳烦专业技能出众的编程人员。事实上,害怕自己不足以胜任合格程序员的念头是影响大部分开发者迈入开源项目领域的最大障碍。不要抗拒从小处入手,先别急着解决什么重大错误或者重新编写整个模块。最好的起点就是尝试寻找小型缺陷,例如说明文档内容缺失或者进行跨设备的检测及修复工作,甚至连修正简单的语义错误及语法问题也是很有价值的贡献。
这些较为初级的任务能够成为大家初步迈入开源贡献者门槛的良好开端,而且不必担心碰到自己无法解决的重量级难题。大家可以注册CodTriage将GitHub问题自动发送至您的个人邮箱。在查看收件箱时,只要感觉有信心搞定当前工作,就请放心大胆地发送接手请求。(我们将在本文稍后位置继续讨论其具体实施过程。)
了解项目的相关生态系统
对于任何协作内容,都可能存在一系列已经被全球开发者所广泛认可的约定。其中可能包括一套词汇集、贡献方式以及提交信息的固定格式,甚至语法标准也已经拥有标准化规范,这就要求每一位贡献者提前做好了解。在我们尝试介入某个项目之前,请阅读与工作相关的全部说明文档。举例来说,GitHub提供标准化CONTRIBUTING.md文件(大家可以点击此处查看jQuery入门指南帮助自己熟悉这一流程)。这些指南文件将由维护代码库及主分支的开发人员进行维护。
另一种了解项目生态系统的方式在于查看现有代码库以及git日志。通读开发者提交的信息并认真体会代码风格能够帮助大家进一步了解关于项目的方方面面。通过对项目说明文档的阅读,我们可以采用更为合作者所熟知的词汇,从而保证自己的贡献内容继续保持同样的叙述风格。
一旦我们已经成功融入项目的现有文化生态系统,接下来该如何贡献代码?
通过pull request工作流进行代码贡献
贡献代码的工作流程可能令人望而生畏。最重要的一点是要记住按照当前工作项目(正如我们前面所讨论过的)的模式及标准处理工作。GitHub所支持的一般性工作流程其实没那么困难。
1.将目标repo发送到自己的账户当中。
2.将repo克隆到自己的本地设备当中。
3.查看新的&主题分支&并做出变更。
4.将主题分支推送回自己的fork。
5.利用GitHub上的差异查看器创建一条pull request。
6.根据请求进行变更。
7.将pull request进行合并(通过在主分支当中),然后将主题分支从上游(目标)repo当中删除。
在整个工作流程当中,根据给定项目的不同、其具体内容也会出现很多差异。举例来说,主题分支的命名约定可能有所区别。某些项目使用诸如bug_345这样的公约,其中345代表已经提交的GitHub问题ID号。某些项目更倾向于提交相对较短的消息。我们将通过以下一系列命令完成前面提到的工作流程。
第一步: 进行Fork
在上对repo进行fork。
第二步: 进行克隆
利用右侧边栏中的URL对repo进行克隆:
git&clone&:jcutrell/jquery.git&
第三步: 添加上游远程仓库
切换到克隆目录,在这里大家可以添加上游远程仓库:
cd&jquery&git&remote&add&upstream&:jquery/jquery.git&
以上命令现在允许大家将本地源中的变更提取出来并加以合并,如下所示:
git&fetch&upstream&git&merge&upstream/master&
步骤四:检查主题分支
不过在大家执行自己的变更前,请先对主题分支进行检查:
git checkout -b enhancement_345
步骤五:提交
现在,大家可以执行变更并创建commit以追踪具体变更内容。
git&commit&-am&&adding&a&smileyface&to&the&documentation.&&
步骤六:推送
接下来,大家将把主题分支推送到自己的项目fork当中。
git&push&origin&enhancment_345&&
第七步:创建pull request
最后,大家需要创建一条pull request。首先,查看repo中的fork,我们可能会看到一条&您最近推送的分支&。如果结果确实如此,则可以选择&比较并pull request&。如果显示其它结果,则可以在下拉菜单中选择自己的分支,随后单击repo界面右上角的&pull request&或者&比较&按钮。
通过&比较并pull request(Compare and Pull Request)&按钮创建pull request
通过分支下拉菜单创建pull request
两种方式都会将我们引导至同一个页面,在这里大家可以创建pull request并在其中添加评论意见。该页面还以直观方式显示出我们所做出的各项变更。这将帮助项目管理员更轻松地查看自己已经完成的工作,同时简化决策过程、更快决定当前内容是否适合提交。如果变更存在问题,管理员可以在评论中提出质疑;管理员还可以要求我们清空pull request并重新提交,然后关闭pull request。
请注意,向项目管理员表达充分的尊重对于开源贡献而言非常重要;毕竟我们总是能够使用代码的分支版本,如果管理员不打算pull我们的变更,这往往与他们的角色定位有关。请记住,根据GitHub员工Zach Holman在《GitHub如何利用GitHub来创建GitHub》一文中所说,pull request实际属于对话的过程。最重要的是认同管理员的处理方式;相对于一味要求对方接受我们提交的内容,大家应当调整心态、只把提交过程视为与编写代码相关的对话通道。
GitHub Issue+Pull Request=项目管理最佳效果
GitHub提供GitHub Issue,这是一种非常有效的途径,帮助我们为任何特定项目创建记录化、交互化以及自动化的bug或者功能对话。不过Issue可以被禁用,而且其在默认状态下即被禁用。Issue中内置有大量值得称道的功能,但最重要的功能之一在于其与pull request的整合。用户只需在提交消息中加入issue的数字ID,即可轻松在所提交信息中罗列该issue作为参考。例如:
git&commit&-am&&Adding&a&&fixes&#3&&
这条提交消息会在关联pull request被接受后自动标记3号issue。这类自动化机制使得GitHub成为一款出色的项目开发管理工具。
寻求协作的辅助渠道
通常情况下,大型开源项目会从众多不同类型的协同工作当中受益。
大家千万别误以为开源项目的贡献途径就只有通过pull request来实现。通常情况下,大型开源项目会从众多不同类型的协同工作当中受益。举例来说,像Ruby on Rails这样的项目拥有知名度极高的技术社区,该社区会通过论坛及IRC聊天室回答问题,从而帮助开发人员建立起知识框架。这也有助于在讨论框架的未来发展方向时迅速从中找到谬误之处。
这些协作渠道通常作为前面所提到的支持环境开放,例如论坛与聊天室。当然,开发者之间也可以通过电子邮件体系或者电话会议来定义项目的发展方向,共同创建一套活泼而富有成效的项目社区。如果没有这样成熟健康的社区体系,pull request的效果将大打折扣。
重中之重在于态度
请记住,开源项目的根本动力来自人们分享知识、建立集体智慧并为之付出努力的态度。要想真正参与到项目中来并做出自己的贡献,大家应该即使保持一种好奇的态度--&我能帮上什么忙吗?&--而不应采取较为封闭的态度,例如&我只帮自己想帮的忙&。开源世界中的人们希望与真正乐于帮助他人的开发者一起工作。
如果大家有兴趣参与到开源项目中来,我要首先向您表示敬意!请记住,如果您以正确的态度尝试接近此类项目、愿意从小处入手逐步积累经验,那么我们的名字将同自己的代码一道汇入全球贡献者的成果当中,并最终服务于世界各地的每一位用户。请拿出时间与耐心,认真了解与项目及参与者有关的一切知识。如果能在参与项目的同时找到自己的工作兴奋点,结果将变得更美好。GitHub的力量以及整个开源世界仍然在一天天不断壮大;马上开始与其他开发者们携手前进,您将顺利成为这片新天地中的优秀成员!
原文链接:【编辑推荐】【责任编辑: TEL:(010)】
关于&&的更多文章
2012年已经悄悄从指缝中溜走,是时候对这段时光做出总结了,本专
本期重点推荐:转角遇到Zabbix:企业级分布式系统监控部署
puppet 是一种Linux、Unix、Windows平台的集中配置管
弄清楚一台PC机空间如何运作绝非易事,即使对专家来说
经过数月的不断的改进,Debian Linux 7.0.0稳定版,代
本书主要介绍了SQL Server 关系数据库系统的应用知识,全面介绍了关系数据模型基础理论,SQL Server数据库系统安装、配
51CTO旗下网站      Git是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖于网络和中心服务器。
       Git 在管理项目时,在本地会有三个工作区域:Git 的本地数据目录,工作目录以及暂存区域。如下图所示:
因此对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。
安装及配置Git
终端运行:
sudo apt-get install git git-core
首先去/ 注册一个账户,当然是free and opensource的用户了。
根目录下创建git目录。
mkdir ~/git
初始化两个参数:
git config --global user.name = &username&
git config --global user.email = &***@*****&
因为本机是通过ssh链接github的,所以先创建ssh密钥。
看一下本机是否已经有ssh的密钥。
提示没有文件或者目录的话说明本机还没有创建过,继续执行
ssh-keygen -t rsa -C &your_&
一路Enter,在根目录下面就会生产.ssh文件夹(隐藏,查看隐藏文件夹的话按Ctrl+H),里面有生产的密钥文件。
用gedit打开~/.ssh/github.pub,将文件内容拷贝到剪切板,(最好用gedit,其他的工具可能出现换行空格)
回到github的页面,点击Acount setting,
点SSH Keys,
title随便取,key里面把之前复制的公钥的内容粘进去
终端测试一下:
成功连接的结果就想这样:
Agent admitted failure to sign using the key.
Permission denied (publickey).
再进行连接就没问题了。
最简单的一种使用方式就是从github上下载别人的开源项目。
打开一个开源工程的页面
直接点击左上角的zip包就可以下载工程了。
更方便一些的做法是在终端运行命令来下载源码。
终端运行:
git clone /SimonVT/android-menudrawer.git
会自动下载整个工程到当前的目录。
接下来要实现的是分享自己的项目到github上,并进行版本控制。
首先在github上面创建工程。
在个人主页上点击Responsitories选项卡的New
填写一些信息,点Create respository
github上的项目就创建好了。
接下来从服务器下载工程及配置文件到本地。
终端运行:
mkdir ~/git/repos
cd ~/git/repos
git clone :***/***.git
执行完毕后,repos文件夹下就拷贝好了github上的项目。
本地进行项目编辑,比如添加一个文件之后,
可以通过下面的命令来更新项目了。
git add . //往暂存区域添加已添加和修改的文件,不处理删除的文件
git status //比较本地数据目录与暂存区域的变化
git commit -m &commit directions& //提到代码到本地数据目录,并添加提交说明
有可能你和其他人改的是同一个文件,那么冲突的情况是在所难免的,那么在提交之后再获取一下代码,就会提示代码冲突的文件,我们需要做的就是处理这些冲突,并再次提交:
git pull //更新代码
根据提示修改冲突文件中的代码
git commit -m &commit directions&
当做完以上的步骤的时候,你需要做的是把本地数据目录的版本库的数据同步到GitHub服务器上去
提交完成之后刷新github的页面,发现文件已经跟新好了。
在Eclipse中整合git
首先安装git插件,在Eclispe中,
Help-&Install New Software.
http://download.eclipse.org/egit/updates
接着一路下一步,插件就安装好了。
在Eclipse中创建一个工程。
然后在工程上右击-&Team-&Share project-&git-&next.
选择Use or create repository in parent folder of project,如下图,点finish。
执行完成之后项目文件夹下就会创建好一个.git的文件夹,仓库就创建好了。
由于项目中的有一些文件没有必要上传,比如bin文件夹,需要在项目中设置好。
展开对应的项目,有小箭头的表示需要上传到服务器的目录,在不想要上传的目录上右击,Team-&Ignoe,该目录就会被忽略了。
下面来commit代码到本机一下。
项目上右击Team-&commit。
选中要commit的文件,点commit,完成之后,代码就上传到本地的服务器了。
接下来把代码上传到github的服务器。
命令行中进入到项目的文件夹,运行
git remote add origin /SilangQuan/LinearCompiler.git
git push -f
成功执行后就像这样:
查看github的项目主页,发现文件已经上传好。
之后在Eclipse中修改好项目代码之后,commit之后直接在项目上右击Team-&push就可以进行代码提交。
上传到github上之后,团队中另外的成员可以通过Eclipse-&File-&Import-&Project from Git-&URI来提取工程。
在团队开发中,通常在新的一天的开始工作之前,把最新的代码fecth下来。
直接在项目想右击-&Team-&fetch
再执行-&Team-&Merge.
服务器上的新文件就会添加进来了。
阅读(...) 评论()

我要回帖

更多关于 github 上传 的文章

 

随机推荐