git 使用学习笔记
说到github,以前都是听到居多,并没有使用过。直到有一天,公司需要爬虫程序(我们公司是电商,要爬虫程序去获取一些网站的商品信息,哈哈,是不是很猥琐),然后一个哥们介绍说使用在github一款叫webcollection的单机爬虫,由此结实了伟大的github!
最近,一个爱看小说的朋友说,自己爱看小说,但是小说更新的时间点不定,每次都是自己在网站刷新小说的更新,绝大部分次数都是失望而归,问我有什么好办法。我一时兴起,就说,那还不简单,来,我给你写个程序,每当小说的章节有更新,就邮件通知你呗!朋友当然很开心,说搞定请我吃饭!哈哈,既然说了,那就得做到了。
我分析了一下,如果要完成功能,简单做的话,只需要三个环节,
第一个环节:定时器,定时或者定频率的去爬取网页内容(即更新的小说章节),实现方法,可以是前端的js的setinterval,或者是后台的spring定时器或者timer
第二个环节:爬取网页内容,比较章节数字大小。爬取网页内容,不外乎是在后台发送一个http请求,然后把返回的内容,使用jsoup来解析;比较章节数字大小,只有更新的(获取章节数比当前最新章节数大的)才去保存,这里,可能需要使用数据库了。
第三个环节:发送邮件。使用java的mail.jar包的支持,发送提醒邮件到指定用户邮箱。
当然,详细点的话,可能还有其他的问题,比如,
1.爬取的小说网站,本来是更新很快的,但是,突然更新很不及时了,那这样怎么办呢,需要重新找网站爬取,然后从新编码、部署?
2.代码ok了,打成war包了,部署在哪呢?
3.数据库也必须要使用外网的数据库,不能使用本地的数据库了。
4.还有,代码可能一次性是写不完的,除了在家编码外,我还想在其他地方完善代码,或者我想代码回退,那我怎么做呢?
首先,解决版本控制的问题吧,也就是第四个问题。版本控制,我第一个念头就是svn(哈哈,读者是不是同感),马上搜索了免费且稳定的svn服务器。
结果,只看到googleCode等寥寥,更悲催的,访问google还要FQ,fuck!果断放弃svn,想想,之前使用的git,不是也能胜任版本控制功能?哈哈,好的,
马上切换到git频道!
git的使用
1.注册Git
你使用Git起码要在github上注册吧?注册git账号流程,基本是傻瓜式,进入github网站,一直填写再下一步。。下一步。。。(这个真的不能不会哦)
2.git的客户端安装
2.2 git的安装,直接是exe文件,直接傻瓜式的下一步下一步。。。
安装好了,在开始菜单就能看的,恭喜,安装完成!
2.3 查看下git的版本
3.设置用户和邮箱,标示本机器
4.创建版本库
版本库,记录修改和增加等操作,便于任何时候回退版本。
查看novelWarn文件夹,可以看到,下面多了一个隐藏的.git文件夹,和svn的.svn文件夹类似,若无必要,请不要操作。
5.添加文件到git版本库
所有的版本控制工具,只能控制代码、txt等的内容改动,对图片等二进制的文件,只能判断是否改变,但是,图片这些具体改了什么,git也是爱莫能助!
6.git的远程仓库
远程仓库,这就是我们今天要说的重中之重啦!做这一步之前,github的账号,必须要注册号的哦!
因为本地和远程,是通过ssh加密的,所以,本地需要有点设置:
第一步,创建ssh Key。在user下面,看是否有.ssh目录,比如我的本地
。。。。 好吧,得手动创建一个啦!
创建的命令是 sshkeygen -t -rsa -C 'abc@163.com' ,如果直接cmd命令里敲,回答你的肯定是这个冷冰冰的界面
原来,我们要在电脑的环境变量里增加ssh-keygen!请参考ssh-keygen 不是内部或外部命令
id_rsa是私钥,不可告诉别人的,pub是公钥,可以告诉别人滴!
可以看到自己添加的key啦!
1.如何创建远程仓库呢?
首先,登录github上,然后在右上角找到“create a new repo”创建一个新的仓库。如下:
在Repository name填入testgit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
目前,在GitHub上的这个testgit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。现在,我们根据GitHub的提示,在本地的testgit仓库下运行命令:
git remote add origin https://@xxx/novelWarn.git
把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在github页面中看到远程库的内容已经和本地一模一样了