前言
Minecraft的mod开发和翻译等工作都离不开GitHub一类的代码托管网站——注意Git和GitHub并不是一回事,前者是版本控制系统,后者是个应用此控制版本系统的网站。
Github就是一个档案柜,每份文件都会分门别类的按照时间存放,而当你把你的想法新开一个文件柜位(对应下文的代码库)后,这个文件存放空间就属于你了,你可以根据自己的心情随时变更这些文件的内容,但是一定会将最新的变更内容放在第一份并且附加一些文件说明(对应下文的commit),这是为了方便别人观看和帮你完善这些想法。当别人从你柜位里影印了第一份文件之后,这就是fork/clone了,如此别人就可以因为你这个想法的存放而帮助你去完成更大的梦想。Git套件原先就是在做这些事情,只不过那时它只是个档案管理员,并不是一个档案柜,现在的Github才是,就酱——来自minecraft吧吧务@chen0430tw
虽然这是个英文网站,但也请配合一下,别看到英文就哭爹喊娘的,好歹也是经过九年义务教育的人,合格劳动力总称得上吧?如果你真的是年龄不够,或者就是看英文就感冒,又或者是想要免费私有代码库,也可以选择国内的码云、码市之类网站,差不多的。
码市:https://coding.net码云:https://gitee.com
好的,现在我们假设你会选择GitHub,第一步就是注册个账号:
Sign in—登录,Sign up—注册,这里就是注册界面,从上到下填入你的用户名,邮箱和密码,点击下方的“sign up for GitHub”,网站会为你发送激活邮件,点击里面的邮件链接,进入即可。
现在,欢迎进入世界最大的同性()交友网站!
你的主页
以我自己的GitHub主页为例,看一下它的大致布局(从上到下从左到右): 小黑猫logo:点击即可返回个人主页。 Search Github:搜索栏,在里面打名字进行搜索,前提是名字要对。 Pull Requests:简称PR,是对他人原代码库的请求修改动作(动作具体是什么容后展开),点进去可查看你的PR记录。 Issues:你对他人源代码提出的问题和意见。 MarketPlace:一个较新的功能,是GitHub推出的应用市场,你可以在那里买卖应用进行牟利。 Explore:在这里你可以发现你从未见过的代码,找到你的组织。 小铃铛图标:你的通知。 +号图标:点击弹出菜单: 由上到下分别为新建一个代码库(repository),导入(import)代码库,新建一个粘贴板(gist),新建一个组。 点击你的头像弹出菜单: Your profile:个人中心。 Your stars:你做过星标的代码库。 Your Gists:你的gist粘贴板记录。 Help:帮助文档(老实说我看了头也疼)。 Settings:设置。 Sign out:退出登录。 写有你ID的按钮: 在这里你可以选择作为一个人还是一个组登录(可以创建多个组),并管理你的组和创建一个新组。 Browse activity(特别关注)标签: 如果你在GitHub里没有关注任何人,那么这里是空的,关注(follow)了一些人之后,这里将显示你关注的人的动态。 Discover repositories(发现库)标签: 按照你的关注和你最近的动态为你推荐代码库,可以比作网易云音乐的每日推荐,explore则是漫无目的的,相当于曲库。 Repositories you contribute to:你关注的代码库,无论是加星的或者是“抄”(fork)的代码库。注意:在这里展示的都是作者的原代码库,而且会有加星数这样的指标。 Your repositories:“你的”代码库,准确来说,是你这个账户名下的代码库,点进去要么是你自己开的,要么是你从别人那抄来的。点击“New repository”按钮可以新建一个代码库。 |
先完成一个小目标……
好的,现在我们对自己的页面有了初步了解,那么是不是应该自己建立个代码库尝尝鲜?当然也可以不必现在建,毕竟eclipse/IDEA等专业的IDE(集成开发环境)也是有GitHub支持的。 如楼上一样,点击“New repository”(也可以在个人中心中点击),即可看到如下页面: Owner:所有者,点击按钮可以选择其所有者为你自己还是你创建的组。 Repository name:代码库名,在此指定这个代码库的名字。 Description:对这个库的描述,选填。 下面是选择这个代码库的公有(public)或者私有(private),默认为公有,任何人都可以查看;而私有的呢,就是你可以指定什么人可以看到并参与,相当于不开源和内部开源,当然别想着在GitHub上开私有库写日记,这玩意是付费的,而且有微博。 Initialize this repository with a README选框: 撰写自述文件(readme),一般的代码库介绍就写在这里,尤其是介绍有很多内容的时候。“这样允许你立刻将此库克隆到你的电脑,如果你从别的库导入,可以跳过写自述。” Add .gitignore:这个文件用来过滤掉那些你不希望提交上去的文件类型(百度结果),可不添加。 Add a license:添加许可证,如果你需要明确你的代码版权,就需要这个。如果你对别人要求宽松,可以使用MIT许可;如果你着重自由与分享,不希望别人修改你的代码拿去谋利可以选用GPL协议,详情可查看:http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html 然后点击create repository,即可添加你的新库。 你可能和想你的朋友一起工作,那么新建一个组就很有必要: 点击Create organization,即可开始新建组织。 输入组名,Billing email(支付邮箱,你常用的邮箱即可)。如果你的开源项目属于公司(例如阿里的开源项目),可以视需求选择business选项,并选中“This account is owned by a business”选项,这时你需要输入公司的名称,而该代码库也将由公司的账号控制。 点击Create organization,会转进下一步“邀请组员”,当然你也可以不邀请,直接点finish即可完成建组。 |
我们可以对自己做什么
那么我们可以对自己建立的库做什么呢?(注:PowerInMC是我自己建立的组,此代码库一样属于我自己,和组内具有Owner权限的人,稍后交待) Code:源代码,在这里你可以点进这些文件夹,查看并修改里面的代码。 Issues:该代码库下别人向代码库作者提出的问题,你可以选择回复,或者Close the issue(关闭这个问题),这样就不会被多余的问题所打扰。注意:如果作者(准确来说是代码库所有者)关掉了你提的问题,那么你自己将无法重新打开该问题,但是作者本人可以。 Pull request:该代码库下的PR动作,你可以选择回复它,Merge(合并,通过)它,或者是关掉(不通过)它。 Project:一般人不使用(其实就是我没用过)。 Wiki:如果你想让其他人更好地理解你的代码和产品,那么写wiki很重要,点击Create the first page以撰写你的第一篇代码文档。 Settings:设置,这里有更多内容,单独讲述。 commit:提交操作,当你修改了你代码库的文件时(无论用什么方式,进行了什么样的修改),即可算作一个提交动作,16 commits意为自创建这个代码库以来,所有者共进行了16次操作;别人对你代码库的修改,在你merge之后也算做commit。 branch:代码库的分支,例如,一个模组适用于1.10,1.11和1.12三个版本,那么作者需要开三个分支以存储同一个库名但是代码不同的三段代码。 releases:正式版本,你可以将完整的文件(例如.exe,.jar)上传到这里,这样你的用户将可以在此下载现成的文件。 contributors:有多少人曾经对这个代码库做出过改动,都算是其contributor(贡献者)。 MIT:代表此代码库选用了MIT许可证。 Create new file:新建文件,点击后弹出如下页面: 在上方的小框中输入文件名(例如zh-cn),注意如果在输入文件名的过程中打了“/”符号,那么将自动生成一个文件夹,例如这样: 另外,如果你忘记在新建库的时候选择许可证,只需要新建一个名称为license的文件,将自动出现一个写着“choose a license template”的按钮,点击按钮即可选择许可证,当然你也可以写自己的,前提是你可以保证该许可证的严密性。 Upload files:从本地上传,注意,可以上传文件夹。 find files:查找文件。 clone or downloads:克隆或下载,点击此按钮会出现一个该代码库的链接(比起地址栏的链接,克隆出来的链接多了个.git后缀),或者直接下载源代码的zip文件(如果你使用了VisualStudio的GitHub插件,还会多一个部署到VisualStudio的选项)。 注意,该功能与release的区别在于,downloads下载的都是源代码,不具有相应的功能;而release下载的一般是成型可用的文件,是源代码经过编译和混淆之后的产物,而且可能含有图片等原作者不希望上传上来的东西。 如果是你的组,又该如何管理呢? 点击“your profile”进入个人中心,点击左下角(你的头像下方)的Organizations图标,即可进入对应的组: PowerInMC:组名 Repositories:这个组名下的代码库 People:人员 team:建立一个团队,在这里你可以更加灵活地控制每个人对代码库的修改能力(可读,可写等) project:略 settings:我懒得写了,以后再说 type按钮:点击此按钮你可以查看此组下特定类型的代码库,例如public(公有),private(私有),fork(抄本)等。 language:点击此按钮你可以查看特定语言(例如Java)的代码库。 New:在该组下新建代码库。 Invite someone:邀请他人 在People标签下你可以对人员作出管理。 2FA:双因子认证,默认关闭,个人用户也没必要开。 private:默认选项,只有本组成员能看到这个组,如果设为public则可以被所有人看到。 Owner/Member:你的用户组权限,owner用户组可以自由编辑该组织下的所有代码库,member则不行。 点击齿轮图标可以进一步设置: Manage:略。 Change role:可以将Member转为Owner,也可以再转回来。 Convert to outside collaborator:转为外部合作者(权限不明)。 Remove from organization:踢出本组 |
个人中心(也适用于其他人)
如前所述,点击“your profile”进入你的个人主页,左上角是你的头像,ID,和简介“bio”,点击头像下的“add a bio”按钮添加简介,保存之后可以重新编辑bio。 你所在的组就在Organizations部分下,点击以进入,然后详见前文“我们可以对自己做什么”。 Overview标签-Popular repositories:在这里按星标和fork数从高到低次序显示了你“最受欢迎的”代码库,你也可以点击“Customize your pinned repositories”以指定你最想在个人中心中看到的6个代码库(多为你经常修改使用的代码库)。 xxx contributions in the last year:最近一年的动态,绿色越深说明当天越活跃,每一个绿色方框都对应着一个日期,点击方框,即可在下方的contribution activity里面看到当天的动态。 contribution activity:账号主人的动态。 Repostories:你这个账号下的代码库,跟在首页看是一样的。 如果你有太多的代码库(一般来讲有这么多代码库的都是不需要看这教程的大牛,或者说看这教程的都没几个库),可以按照type(代码来源种类,例如forks),和language(例如Java)进行搜寻。 Stars:你加星的代码库,如果你有太多加星的(例如我上面截图的这位),可以按照语言和加星的情况(例如most stars,最多加星)搜寻。 followers:想约(关注)你的人。 following:你想约(关注)的人。 |
我们可以对别人做什么
当然,GitHub是个讲究发现,讲究合作的地方,光在这里闭门造车是不成的——从国外的模组作者需要国内的人来进行汉化就可以看出来。 那我们可以对别人的库做什么呢? 这里是谷歌出品的guava框架,我们觉得它的代码很好,想把它抄到自己这里来研究一番,这时就需要点击“fork”按钮,来抄一份代码。 等上几秒,你就可以看到如上图界面,左上角为“你的ID/guava forked from google/guava”,意思就是“你从google这里抄的guava”,此时,原来的代码库被称作base fork(可理解为原本),而你抄来的被称作head fork(抄本),你可以任意修改你的抄本,画只乌龟进去都行。 好的我们假设你真的画了只乌龟,并准备扔在谷歌程序猿的脸上,这个时候就需要发个Pull Request了。 点击Pull Request(PR)标签,点击New pull request,并点击“compare across forks”(在抄本间比较)即可看到如下画面: base fork:原代码库,base就是你要修改的那个分支(例如master); compare:你已经修改并准备合并的分支(也是master)。 “able to merge”代表没有任何错误,对方可以正常接收你的PR。 点击Create pull request,会出现标题和描述(选填),这时再点一次Create pull request就可以了。 所以,pull request的准确定义是“将修改后的某一分支与原本中对应的分支合并”。 注意,同一代码库中的不同分支也是可以相互PR合并的,一般用于在合并分支前预览变更,机器人自动进行代码分析、排版检查,或是触发一个测试构建等目的。 |
部分设置
Features(特性):在这里你可以修改他人所能看到的信息。 Wikis:取消选择该复选框,将不会显示Wiki标签。 Restrict editing to collaborators only:你可以将别人列为该代码库的collaborator(合作者,权限高于contributor),此选项默认开启,只有你和你的合作者可以自由修改该代码库的代码,其他人必须通过PR修改。 Issues:取消选择该复选框,将不会显示issue标签,别人将无法通过issue向你提问。 Projects:取消选择该复选框,将不会显示Projects标签。 Vulnerability alerts:默认开启,如果你所依赖(dependencies)的代码库有安全漏洞,你将收到警告。 Merge button:在这里你可以修改点击merge按钮之后的行为,三个选项必选其一。 Allow merge commits:取消选中此复选框,你依旧可以merge别人的修改,只不过显示的不再是“merged xxx commits” ,而是“xxx(修改者)and xxx(代码库所有者)created xxx(文件名)”。 Allow squash merging:将若干个修改者提交的commit合并为一个merge动作。 Allow rebase merge:允许变基(rebase),这样可以允许修改者临时更改所进行PR的分支,例如我本来向master分支发送一个PR,被作者临时告知换一个分支,这个操作就叫变基。 变基操作并不困难,点击你的某个PR标题右侧的edit按钮,将自动变成上图所示,点击base:xxx按钮即可更改准备提交到的base,即为rebase。 Temporary interaction limits:这里允许你临时(24小时)禁止别人与你的代码库交互(例如回复,提问,创建PR),通俗来说就是“管理员全员禁言一天”,点击Enable按钮,把它变成disabled即可禁止。 Limit to existing users:最近创建账户的“萌新”禁止交互。 Limit to prior contributors:未对master分支提供过任何修改的用户禁止交互。 Limit to repository collaborators:非合作者不能交互。 危险区域:这里的选项需要谨慎考虑。 Make this repository private:使该代码库变为私有的,如果是你fork来的库则不允许这样做。 Transfer ownership:变更所有权,点击transfer按钮即可将代码库转移到他人或组的名下,如果是你创建的组,你仍然对该代码库享有控制权。 Archive this repository:存档化代码,将不允许编辑它。 Delete this repository:删除此代码库,会弹出一个对话框要求你输入该代码库的名字以确认。 这么做是有实际意义的,因为抄本与原本并不同步——例如我fork了一个mod的代码而未对其作出其他操作,过了几个月,作者更新了代码,我需要重新fork,就需要把它删掉。当然,也可以反过来把作者的库PR到你这里,不过在此之前请备份好自己的改动,否则会被覆盖。 collaborators:在这里输入你想邀请的用户名,点击add collaborator即可发送邀请加入。 其他选项不再赘述。 |
IDEA对GitHub的支持
IDEA等优秀的IDE都有着GitHub的集成,这里将着重介绍它,啥你说eclipse?辣鸡软件,丢了丢了。(滑稽) 进入IDEA,点击“File”-“Settings”-“Version Control”-“Git”。 为了将你的代码部署到GitHub上,需要Git这个软件的支持,如果你没有装过,请百度下载Git,然后在Path to Git executable栏中填入你安装Git的路径,并点击test测试一下有效性。 点击Github选项,在里面输入github.com,你的账号,你的密码,点击test测试一下链接,然后点击OK,保存生效。注:apply(应用)可以在不关闭窗口的情况下使改动生效。 然后点击VCS(Version Control System,版本控制系统的缩写),点击“import into version control”-“share project to github”,IDEA便会弹出对话框让你对此库命名并在GitHub上新建一个空库。 与此同时,会弹出这样的对话框要你选择第一次commit所要上传的文件,默认是全选的,你可以不选中某些文件,也可以现在取消,仍然会新建那个空的代码库。 此时你的代码库已经被添加了VCS集成,菜单变成这样: 你可以在其中进行常规的版本管理操作,例如新建分支,向GitHub库添加文件,撤销修改(Revert)等等,如果你想对你的代码进行后续更新,请点击VCS-Commit项或点击VCS-Git-Commit File项,弹出如下对话框: 选择你所要进行commit的文件, 输入你的commit message(更新记录),点击commit,即可将其保存到你的本地commit信息中。 咦,怎么网站上没有我的commit呢?注意,这一commit是“本地”的,想推到网站上,就要使用Git-push功能把你的commit推到github上。 左侧是你先前输入的更新信息,右侧是你准备推送的文件,点击push即可。 如果你想撤销掉你的commit(无论是网页上已经merge的PR,还是你自己上传的),可以使用revert功能,不再赘述。 如果是VisualStudio,需要先安装它的GitHub插件:https://visualstudio.github.com/,也可以在安装VS时或者在VS内部的marketplace安装,之后你可以在右侧的“团队资源管理器”中看到你的GitHub项目,像这样: 可以看出,VS的汉化非常到位,就不进一步交待了(其实是我懒得写了)。 如果你在网页上看到一个不错的代码库,想下载下来看看又该怎么办呢? 第一当然是直接下载源码zip文件用IDEA打开,当然有更方便的方法——克隆(Clone)。 点击VCS-Git-Clone,弹出如下对话框: Git Repository URL:在这里填入你的代码库网址(注意是点击clone and download之后出现的.git链接),并填入放置克隆的本地路径,点击“Clone”即可,并自动开启VCS集成。 |
用GitHub开博客
http://cyzus.github.io/2015/06/21/github-build-blog/ |
[groupid=1330]PluginsCDTribe[/groupid]