array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 沉淀,再出发:Git的再次思考 - 爱码网

一、前言

   使用git也有很久了,后来有一段时间一直没有机会去使用,现在想来总结一下自己学习了这么长时间的一些心得感悟,我写的博客一般都是开了一个轮廓和框架,等到以后有所思有所悟了还会增加的,正如软件一样一直都会不断地更新,加入新的东西,修改一些过时的东西,我们做人和做事也应该这样,不断地学习新的知识,取其精华去其糟粕,不断地进步和增长。关于git也是用来进行项目管理的,同样是为了团队协作,这个场景使大家使用着各自的电脑,可能相隔万里,只要能够进行通信,就能够从github上进行代码的同步操作,这是非常有意思的。

   相比于以前的subversion等项目管理软件,git更加的强大,并且很好用,这里的好用有两种意思,第一是功能很强大,每一个成员都可能将中心仓库的代码给删除了,当然也能植入自己的内容,第二个好用是一不小心提交了错误的代码同样的也会被其他成员所使用,造成很恶劣的影响。因此十分熟悉git的操作,明白背后的意义,以及合理的使用git来进行代码的维护是非常重要的。上次我们学习了maven是为了管理依赖,统一风格,而git则是为了同步代码,管理项目的进程,这两者一个面向于代码的同步和转移,另一个面向于项目内部的实现和依赖的处理,两者结合起来组成的开发能力就非常的强大了,对于团队开发来说非常的重要,是两把利剑。

二、Git的基本操作

   2.1、Git和Github

   众所周知,Git是一个软件,安装在本地的机器上,用来从Github这个远程仓库中pull、push代码,从而达成团队协作开发的目的。这两者就好比是抽水机和池塘,Git从GitHub之中得到代码并且维护着版本和分支的信息,从而进行合并和开发。因此使用Git必须要有Github账号以及项目才行。

   2.2、安装Git

   Git的安装非常简单,只需要从官网上下载并安装就可以了,不用配置什么环境变量就能够进行使用了。同样的官网上还提供了很多的GUI用来对Git获得的代码进行分析和操作,我们可以大致了解一下。安装的过程很简单,我们不再赘述,安装完成之后就能打开使用了。可以看到这个shell使用的是Linux中的命令,非常的有意思。

沉淀,再出发:Git的再次思考

沉淀,再出发:Git的再次思考

    沉淀,再出发:Git的再次思考

     2.3、创建Github项目并clone到本地

      接下来我们在github上创建一个项目,放一些文件进去便于我们的实验。考虑到多人协作的问题,我们先创建一个组织,在组织下面在创建项目,同时可以邀请其他人加入我们的项目实现协同工作。

沉淀,再出发:Git的再次思考

沉淀,再出发:Git的再次思考

沉淀,再出发:Git的再次思考

     这样我们的项目就建好了,剩下的就是邀请其他人进入其中,并且最好的就是将别人的公钥放入自己的Github上去,这样其他人在使用Git的时候就不用每次都输入账户和密码了。在设置,SSH或者GPG秘钥之中,我们加入自己和别人的公钥。但是需要注意的一点就是,我们如果使用SSH加密的话,需要将项目改成使用SSH能够获取的,之后我们在添加SSH秘钥,这一点非常重要!!!!!!

沉淀,再出发:Git的再次思考

 

沉淀,再出发:Git的再次思考

    在Git中使用如下命令来生成秘钥和公钥:

  ssh-keygen -t rsa -C  邮箱号

沉淀,再出发:Git的再次思考

    然后我们转到生成的公钥和私钥的目录,私钥是我们自己的打死都不能给别人,而公钥就是让别人拿来给自己进行通信的,因此,我们把公钥发给这个项目的管理员,让他在刚刚的地方复制进去我们的公钥,这样就能很好的工作了。

沉淀,再出发:Git的再次思考

   我们可以根据Git项目的网址将项目clone到本地,这个不需要秘钥,但是如果以后提交内容的时候就需要了:

沉淀,再出发:Git的再次思考

    比如我们在这个时候不加入公钥到仓库之中,那么我们操作到了git push的时候就不能向下执行了,非常的麻烦,需要输入账号和密码,并且之后还是需要配置的。

沉淀,再出发:Git的再次思考

   那么我们将公钥加入仓库之中,此时管理员会收到邮件提醒,做的还是很到位的:

沉淀,再出发:Git的再次思考

沉淀,再出发:Git的再次思考

     然后我们再重新下载一下项目,可以看到项目加载成功!

沉淀,再出发:Git的再次思考

     2.4、开始进行开发和提交

     对于clone下来的项目,开发就是按照以往的开发方法,将这些文件导入到myeclipse之中,可能使用了maven,那就更新依赖,之后就可以进行开发了,那么什么叫做开发呢?!开发的本质其实就是增加文件、修改已有的文件、删除某些文件,再说白一点就是对原来的文件库进行增删改操作,这就是开发,那么因为这些操作必然会影响到我们的本地仓库之中的代码,比如我们增加了一个文件,又修改了一个文件,还删除了一个文件,然后要怎么样同步到远程仓库之中呢,那就需要用到Git的强大功能了,另外提醒一点,在我们使用git的时候一定要把myeclipse关闭了,不然因为其中某些文件没保存,或者产生了一些临时文件被我们提交了就可能造成错误。

    沉淀,再出发:Git的再次思考

     下面我们模仿开发之后提交的过程:

     首先,当我们clone下来文件之后,第一件事是什么呢?!绝对不是直接就开发了,而是将Git切换到这个目录内部,然后新建一个分支,在新的分支上进行改动,这一点是重中之重,可以防止我们将原来的文件给修改了之后恢复不了的问题。在我们的项目中默认只有一个主分支master,我们在任何时间不能在这个分支上进行任何的开发。

git checkout -b 分支名

沉淀,再出发:Git的再次思考

    这样我们进行的开发都是在这个新的分支上开发了,不会影响主分支的结果,比如我们在新的分支上放入一个文件。

 沉淀,再出发:Git的再次思考

    如果直接切换到主分支,此时因为没有保存这个改变,我们在主分支也能看到这个文件了,这是因为我们在没有保存这些改变到新分支上面的时候,这些文件只能算是文件系统上面的文件自然能被所有分支看见,其实对分支内部的数据结构来说是透明的。

沉淀,再出发:Git的再次思考

    但是我们接下来在切换回新分支,然后保存之后在切换回主分支看看,这样也解决了我们的一个疑惑,如果随便扔到分支里面一个文件就要承认的话,那么使用起来也太需要小心了。

沉淀,再出发:Git的再次思考

   上面我们使用了:

git add .
git commit -m "描述信息"

   接下来我们正式将开发好的新分支合并到主分支上面:

git checkout master
git pull
git checkout "新分支"
git rebase -i master
git checkout master
git merge "新分支"
zyr@DESKTOP-RS2P5FV MINGW64 /d/GitTest (zyr_first)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

zyr@DESKTOP-RS2P5FV MINGW64 /d/GitTest (master)
$ git pull
Already up to date.

zyr@DESKTOP-RS2P5FV MINGW64 /d/GitTest (master)
$ git checkout zyr_first
Switched to branch 'zyr_first'

zyr@DESKTOP-RS2P5FV MINGW64 /d/GitTest (zyr_first)
$ git rebase -i master
Successfully rebased and updated refs/heads/zyr_first.

zyr@DESKTOP-RS2P5FV MINGW64 /d/GitTest (zyr_first)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

zyr@DESKTOP-RS2P5FV MINGW64 /d/GitTest (master)
$ git merge zyr_first
Updating 4b1509b..313111a
Fast-forward
 test1.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 test1.txt

zyr@DESKTOP-RS2P5FV MINGW64 /d/GitTest (master)
$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 331 bytes | 331.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:zyrtest/GitTest.git
   4b1509b..313111a  master -> master

zyr@DESKTOP-RS2P5FV MINGW64 /d/GitTest (master)
$
View Code

相关文章: