我发现很多同学好像对git的使用还不是很熟悉,所以写这么一篇教程,让你也能方便的为EasyASP修复bug或者提交新代码。 下面的例子都是在win下使用图形界面客户端(TortoiseGit)完成的,熟悉了之后推荐你使用命令行操作,个人感觉比图形界面更方便。
首先,如果你从未使用过git,请先看下面这篇文章:
http://www.cnblogs.com/shuidao/p/3535299.html
通过这篇文章,你可以了解:
1. 什么是git 2. git是怎么工作的 3. 如何使用git客户端
OK,所以你现在要准备的是这两个软件: msysgit 和 TortoiseGit,TortoiseGit
请顺便下载简体中文语言包。
下载好了就进行安装,安装完毕请先将 TortoiseGit
设置为中文,右键菜单 TortoiseGit
> settings
> language
选择中文。
接下来就是具体的操作流程了,每个项目的具体情况都应该是不一样的,但流程是相同的,我以给 EasyASP
贡献代码为例来说:
EasyASP v3 是托管在 git@OSC 上的,所以你先要注册一个 git@OSC
账号,打开 http://git.oschina.net ,点击右上角的 注册
。
填写好注册信息提交后,会有一封激活邮件发送到你的邮箱,请到邮件中激活账号。如果在激活链接中提示你 Confirmation token 是无效的,请忽略它,一般来说,此时已经激活了。
然后,请用你的账号登录,账号名是邮箱地址。另,邮箱地址是你在git中的唯一身份标识,无论是本地还是托管网站,你的提交都是以邮箱地址来识别身份的。
先别忙着建立项目或者fork,先添加一个公钥,否则你没法往git服务器上 推送(push)
数据。
我们先在本地生成一个公钥文件:打开 TortoiseGit 程序目录的 Puttygen 程序。
点击
Generate
,然后,不要傻等着,用鼠标在进度条的下面空白区域随便乱晃,可以很快生成完毕,否则,你就等吧。
生成好的图就像下面这样,这里要做两个工作,一是把上面红框中的内容复制下来,要全部复制,右边有滚动条哦。二是点击下面的
Save private Key
,把私钥保存到你的电脑上。
如果弹出下面这个框问你,你可以直接点
是
,因为咱们这东西不用加密。好吧,记住你保存 .ppk
文件的位置。
怕你稍候操作有失误,所以
puTTY Key Generate
窗口可以先不要关。接下来,登录git@OSC网站后点击导航栏中的 SSH公
钥 > + 添加公钥
。
把上面让你复制的一大段粘贴到这里面,名称随便起,然后保存,保存的时候可能要你输一下密码什么的,我知道这个事儿你特熟,输吧。
转到EasyASP的git项目主页 http://git.oschina.net/coldstone/easyasp ,点击右上角的 Fork
。
之后,项目会复制到你的git空间并自动转到该页面,地址是
http://git.oschina.net/你的用户名/easyasp
,现在它已经是你自己的项目了。
然后把上图框中的项目git地址复制下来,后面要用。
接下来的事情开始在你的电脑上操作了,来,在你的硬盘上找个合适的位置用来放置项目,然后在这个空白的目录下点击鼠标右键,选择 Git克隆…
:
在弹出的对话框中,把刚才复制的git地址填写到第一项 URL 里,“目录”这个一般不用修改,下面的 加载putty密钥 中选择你自己保存的ppk文件。
点击
确定
后,就会把网站上的项目同步到本地了,弹出下面这个对话框说明你成功了!
接下来要在你本地的git上设置好你的账户信息,用于和git服务器通信。
进入你刚才同步好的git项目目录,可以看到里面的项目里除了项目文件外,还多了一个目录名称为 .git
,这就是你的git工作目录,会记录下所有的git版本信息。
在这个文件夹下点击右键,选择 TortoiseGit
> 设置
> Git
,然后输入你在网站上注册的用户名和Email地址,如图:
如果你只有一个osChina账号,那么建议你设置为
全局
,如果你既有github又有osc账号而且email还不一样,那么这里可以设置为 此版本库
,还记得我刚才说的吗,git提交的唯一标识是email地址哦,所以email一定要和网站上注册的一致哦,否则即使你提交成功了也不会显示为你本人提交的。
然后点击下面的 远程
,这里因为你之前已经同步过了,所以会把远程地址和ppk文件路径自动填写上,所以你只需要改一个容易辨认的名字就可以了,比如:
OK,到这里,所有的基本设置已经完成了!现在就开始你的项目贡献之旅吧。
嗯,先等等,让我们再回顾一下,清楚几个基本的操作方式:
Git提交→master
,然后输入注释,点确定。这个你可以在本机上有无数次操作,只会创建本地版本库,不需要用户名密码,对服务器数据无影响。
推送(push)
到服务器,这个需要用户名和密码,会把服务器的代码更新到和本机一致。
获取(fetch)
和 拉取(pull)
功能。
创建拉取请求(pull reuqest)
功能。
如果你还是不太清楚,那么需要你反复的研读上面这几点,直到搞懂 本机
> 你的项目
> EasyASP项目
之间的关系和更新方式,下面我开始详细讲述如何提交一个代码更新。
嗯,你先要仔细阅读Easp的代码,或者是在实际项目中去运用它。然后,你可能会发现其中的bug或者功能上不如意的地方,这时候你的小宇宙一下子就沸腾了,你强烈的感到你要亲自去修改它,完善它,然后,用不了多久,你就会升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰,想想还有点小激动呢……呃,你还没提交代码呢。。
比如,我找到 easp.db.asp 中的分页代码里,默认的分页样式的下拉框配置长度为不限制,如果页数很多的话,会生成很长的列表,载入就会很慢,甚至超时,所以,我把原来的0修改成了20,如下图:
保存之后,文件夹中的文件图标也发生了改变:
好了,现在修改完了,要先把这个代码更新提交到本地,再推送到我Fork的项目中。在空白地点点右键,选择 Git提交→master
,会弹出下面的框框:
在上面的日志信息中输入你提交的代码的注释说明,下面的变更列表里,会自动把你所有修改的文件和你新增的文件列出来,选择好要提交到版本库的文件,点击
确定
,会出现提交成功的提示,如下:
在页面的左下角,会有
推送
按钮出现,点击它,就可以把更改提交到服务器,如果点关闭,则只是进行了本机版本库的更新。点击 推送
按钮之后,会出现下面的界面:
输入本地的版本库分支和远程服务器的分支,这里我们没有创建过其它分支,当然都是
master
。远端目标要选择你建立的远程连接名称,选择 自动加载 putty 密钥
。
上面的也有可能是废话,因为它们极有可能都是默认就选择好的!好了,点击 确定
,这时会弹出一个框问你要用户名和密码:
输入密码:
如果弹出下面的框框和信息,那么你就提交成功啦!
去网站刷新你的项目看看吧,应该会有如下的更新信息了:
在上面这张图的右上角,有一个 Pull Request
按钮,它的作用就是把你Fork的项目中的更改提交到 EasyASP 官方库,点击它,新建一个 拉取请求(pull request)
:
注意上面一行中的三个框框,根据箭头的方向,它表示了要从哪个源提交到哪个目标,就按图上这样设置就是提交到 EasyASP 官方库了。在标题和说明里尽量把你的代码更新的内容以及为什么要做出这样的更改的原因说清楚,最后点击下面的
提交 Pull Request
。
然后你到 EasyASP 官方库的页面上,点击项目的 Pull Requests
,应该就可以看到你自己的提交了,如下:
OK,你已经成功提交了代码,接下来的事就不是你能控制的了,EasyASP 官方库如果没用采用你的更改,那可能这个Pull Request会被删除,你会收到一个通知;如果采用了你的更改,则会把你的更改结果合并到主分支,你可以看到如下面这样的合并信息:
你还会收到这样的邮件通知:
嗯,这样就完成了!如此多提交几次,用不了多久,你就会升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰,想想还有点小激动呢……是不是呀?
呐尼?!还没有完?
呃。。是的,还有个情况还没有考虑到,那就是:如果 EasyASP 的官方库代码有了新的更新,你 fork 的项目并不会自动同步,也就是说,你的源始代码有可能不是最新的版本,怎么办呢?如果你在修改的过程中,EasyASP 的官方库又更新了,那么又怎么办呢?
这里可以用这两个操作:一是 获取(fetch)
,二是 拉取(pull)
。这两个有什么区别呢? 获取(fetch)
就是把远程的分支取回来,但是并不 合并(merge)
到你本地的分支,而 拉取(pull)
则是会取回来后和本地的分支合并,基本上等于 fetch+merge。明白了吧?所以要保持本地的分支和官方库一致,可以用fetch或者pull取回来,如果要保持fork的项目也一致,则需要你再次从本地push到你fork的项目去。
具体流程是,第一,你需要在本地的git客户端上添加官方库的远程地址:
输入 EasyASP 的git地址,取个名字,然后就可以在右键菜单里使用
获取(fetch)
和 拉取(pull)
这两个功能了:
选择远程为EasyASP官方库,
获取(fetch)
成功后的提示:
拉取(pull)
的界面如下,远程还是选择 EasyASP 官方库:
合并到本地分支后,会有这样的提示:
最后,再重复上面的 提交到我的项目库 这一步骤,就可以同步到你在git@OSC上fork的项目中了。
是不是发现你也会用git了呢,开始吧。如果熟悉了之后,你可以尝试下命令行方式,很方便哟。
知乎范儿,以上。