自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

crylearner的专栏

about C/C++ , data structure and algorithm

  • 博客(88)
  • 资源 (19)
  • 收藏
  • 关注

原创 一个简单RPC框架是如何炼成的(VI)——引入服务注册机制

开局篇我们说了,RPC框架的四个核心内容:RPC数据的传输, RPC消息协议, RPC服务注册, RPC消息处理。接下来处理RPC服务的注册机制。所谓注册机制,就是Server需要声明支持哪些rpc方法,然后当客户端发送调用某个声明的rpc方法之后,服务端能自动找到执行该请求的具体方法。1. 引入服务注册的方式也是为了代码解耦,将req的处理与具体的req消息内容解耦。2. 上面我们 引入了两种服务注册的方式,一种方式是普通的方式,逐个添加方法。另一种方式通过python的“反射”技术,自动查找一个服务

2015-07-20 22:52:08 3784

原创 一个简单RPC框架是如何炼成的(V)——引入传输层

开局篇我们说了,RPC框架的四个核心内容RPC数据的传输。RPC消息 协议RPC服务注册RPC消息处理   接下来处理数据传输。实际应用场景一般都是基于socket。socket代码比较多,使用起来也比较麻烦。而且具体的传输通道使用socket或者其他的方式,如更上层的http,或者android里的binder,都是可替换的,只是具体的一种实现而已。所以,这里我就偷个懒,只是

2015-07-20 22:47:41 2056

原创 一个简单RPC框架是如何炼成的(IV)——实现RPC消息的编解码

之前我们制定了一个很简单的RPC消息 的格式,但没有实现相应的encode和decode方法,下面我们处理掉这个编解码问题。这里我还是简单原则,重点在于晓义嘛。利用python里的两个运算。 str 和eval,实现编解码。

2015-07-19 19:29:16 2636

原创 一个简单RPC框架是如何炼成的(III)——实现带参数的RPC调用

上一篇,我们制定了一个很简单的RPC消息 的格式,但是还遗留了两个问题我们并没有实现相应的encode和decode方法,没有基于可以跨设备的字符串传输,而是直接的内存变量传递。现在的RPC request不支持带参数的请求命令。如add(a, b), 如何在RPC消息中描述参数a,b 。我先来实现第二个问题,即带参数的RPC调用。其实,也没什么太大不同。既然是要带参数,那

2015-07-19 08:39:23 5280

原创 一个简单RPC框架是如何炼成的(II)——制定RPC消息

开局篇我们说了,RPC框架的四个核心内容RPC数据的传输。RPC消息 协议RPC服务注册RPC消息处理下面,我们先看一个普通的过程调用class Client(object): def __init__(self): self.remote = None ## # 内部是委托给远程remote对象来获取结果。

2015-07-16 21:22:09 2767

原创 一个简单RPC框架是如何炼成的(I)——开局篇

开场白,这是一个关于RPC的相关概念的普及篇系列,主要是通过一步步的调整,提炼出一个相对完整的RPC框架。RPC(Remote Procedure Call Protocol)——远程过程调用协议,基于C/S模型。有四个核心内容:RPC数据的传输,RPC消息的表示与编解码,RPC服务注册,RPC消息的任务处理机。这个RPC框架的搭建,庄稼人将采用python作为开发语言,是从原始的普通调用开始,然后一步步的演化,最后生成一个完整的Rpc框架

2015-07-16 21:20:04 9189 1

原创 读书报告之《修改代码的艺术》 (III)

《修改代码的艺术》,每次读来,都会相当重构,正如作者自己就说到的:从技术上讲,书中列到的解依赖技术,都是重构技术,因为他们都保持了代码的行为。这里庄稼人再多引用《大话重构》中的一句话:先重构我们的系统,使之可以应付那个需求,然后再添加代码,实现新需求。是的,正如读书报告(I)中所阐述的,引入单元测试,本质上就是做定制需求。作为最后一篇,来总结一下最后的解依赖技术。核心思想就是泛化,这里

2015-07-06 22:11:56 863

原创 读书报告之《修改代码的艺术》 (II)续2

修改if else 最忌惮的是天马行空,自负自己对代码的理解,直接重新改写条件语句。但另一方面,相信各位看官也注意到了,理解又是必不可少的,完全死死的做逻辑变形是异常繁琐的(这个在第二个例子中尤为明显),具体如何操作,不好意思,这就是"修改代码的艺术"。口才不行,修行还靠个人。 不要做不成熟的优化。相对来说,代码的清晰度高于性能的优化,而且很多时候两者并不是冲突的,当代码更清新了,往往有更好的优化方案。 举例中的一些代码风格,比如return快速返回,不是每个人都能接受。求同存异,这也是个人座右铭。

2014-09-08 22:27:52 1245

原创 读书报告之《修改代码的艺术》 (II)续

这里作为(II)的续篇,继续距离 复杂的嵌套if else 的处理。 为了保持篇幅不会太长,所以截断了,以一篇新的文章形式给出。化简复杂的if else语句,基本的手段针对头重脚轻的if else,使用return快速返回,从而减少嵌套层数。合并分支。有些分支的执行内容相同,往往意味着可以合并为一个分支扁平化。第二个例子,比较复杂一点,给定一个日期,即年 月 日,让

2014-09-06 09:50:10 1126

原创 读书报告之《修改代码的艺术》 (II)

4. 修改时应当测试哪些方法作者提出了影响结构图的概念。说穿了,就是CallRelation和ReferenceRelation,就是查看某个方法(变量)被哪些方法引用,以及自身又引用了哪些方法,依次类推。这个复杂的关系网实际就是一颗风险评估树(图)。通过这棵树,我们可以知道某个修改会影响到哪些节点。这项参数,既是风险的直接量化指标,同时又是验证修改的测试指标。这是很朴素的思想,不管有意无意,你肯定已经在这么做了,不要告诉我你的boss从来没问过你这样的问题:“这个修改有风险吗?”。

2014-09-05 23:39:09 1303

原创 读书报告之《修改代码的艺术》 (I)

《修改代码的艺术》,英文名《Working Effectively with Legacy Code》,中文翻译的文笔上绝对谈不上“艺术”二字,愧对艺术二字(当然译者不是这个意思)。书中第三部分不论是例子还是解说都有点混乱,远不如《重构——改善既有代码设计》一书。此书精华在于第一、二部分。如何学习这本书,作为一个最底层的码农,作为长期在别人代码上修修补补的苦逼二手货开发人员,我只能给的建议就是

2014-09-05 00:20:38 4500 2

原创 python 计算校验和

校验和是经常使用的,这里简单的列了一个针对按字节计算累加和。其实,这种累加和,使用将字节翻译为无符号整数和带符号整数,结果是一样的。使用python计算校验和时记住做截断就可以了。 这里仅仅是作为一个代码样本,权作标记,直接上代码'''Created on 2014年9月4日@author: lenovo'''import random'''实际计算校验和时,解释为无符号整

2014-09-04 22:05:28 14226 2

原创 python常用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)

进行协议解析时,总是会遇到各种各样的数据转换的问题,这里详细列举了整数之间的进制转换,以及整数、字符串、字节串三者之间的相互转换。当然仅仅是抛砖引玉,有更好更简单的方法,欢迎欢迎

2014-08-27 00:19:41 290732 17

原创 doxygen + doxypypy + docstring 生成python文档

虽然doxygen声称可以同时支持两种风格的python注释,原生的docstring和类似java doc风格的##。但实际对原生的docstring支持并不好。这里介绍了一个开源的doxypypy工具,可以将原生的docstring转换为类java doc风格的##, 从而实现doxygen对python原生docstring的完美支持,同时也自然而然支持使用@tag。

2014-08-24 21:18:45 9218

原创 用python实现wireshark的follow tcp stream功能

长话短说,wireshark有一个follow tcp stream功能,这个功能很方便。美中不足的是提取出的stream 数据没有时间戳等其他信息,在分析数据的延时和丢包问题时就有些力不从心了。这里简单用python实现了一个简单follow tcp stream功能,同时保留了tcp信息。原理很简单,仍然是基于wireshark,里面有一个Export packet dissect

2014-08-20 22:09:12 15381 2

原创 repo sync 时自动切换当前分支的remote track分支的问题

使用repo sync时,如果当前仓库有检出本地分支,假设为dev, 对应的远程track分支为origin/dev。 而manifest.xml中指定的track分支为origin/master,那么在repo sync时会自动将当前的dev分支的远程track分支修改为origin/master, 不仅如此,同时还会将origin/master上的修改rebase到本地的这个dev分支上。

2014-07-23 23:34:44 4759 3

转载 Git图形用户工具介绍及比较

GITK简介 gitk - The git repository browser        Displays changes in a repository or a selected set of commits. This includes visualizing       the commit graph, showing information

2014-07-23 22:01:16 1798

原创 命令行执行python模块时提示包找不到的问题

庄稼人不是专职python开发的道友,虽然与python相识已多年,可惜相识不相知,只是偶尔借助pydev写一些简单的小工具。多年来,一直困惑于这样一个问题:同样的工程,同样的代码,使用pydev可以运行任意一个python脚本,而使用命令行运行却不行?命令行下(或者双击执行)总是提示“ImportError: No module named xxx”?pydev究竟做了什么魔术呢?长

2014-05-11 17:01:14 65440 11

原创 多分支开发策略

分支策略                                                                                                                                    author:crylearner 日常开发中几个常见过程ü  功能开发 (开发人员)ü  bu

2014-01-25 23:32:33 5846

原创 通用makefile是如何炼成的(XI)--最后的完结篇,envsetup.sh

长话短说,没有envsetup.sh, 当你需要单独编译一个模块,或者做点其他工作时,你总是会感到为什么命令行总是那么麻烦!有了envsetup.sh, 对命令行人生有新的感悟,原来我也可以做一个简单的“菜鸟”。这个envsetup.sh是从android的代码中考过来的,做了很大的简化。google他奶奶的太细心和繁琐了,这里用不着可用通过usage命令查询,目前仅支持genmk

2014-01-14 22:39:31 2197 18

原创 通用makefile是如何炼成的(X)—— 导入单元测试

经过这么长的时间,我们的通用makefile已基本构建完成,下面使用一个具体的Examle,作为如何使用的说明。我们这个例子为之前写的hello world编写单元测试。单元测试的工具使用gtest,比较简单嘛。从官网上下载gtest源码包,解压后,里面有个fused-src目录,在里面就是gtest文件夹,包括1个头文件gtest.h, 两个源文件gtest_all.cc, gt

2014-01-13 23:25:57 3420 1

原创 通用makefile是如何炼成的(Ⅸ)整体框架

通用makefile系列收视率比较惨淡,工程本身也进入尾期,这里直接大跃进喽上类图类图画得不好,所以下面文字简单解释1. 整个通用makefile分为若干大块,也就是上面用包表示的部分,主要是产品Product,编译平台Platform,操作系统System,模块Module,编译目标Target,以及Build和Path这两块。   产品Product,编译平台P

2014-01-08 23:11:41 1644 1

原创 linux shell中的命令自动补全(compgen complete)与 命令行参数解析

很多时候,当我们写一个脚本时,我们总会一些可选的命令选项。当可选项比较多的时候,比如git, 那么如果能够提供命令自动补全,无疑是锦上添花。而且个人认为,这种方式,比采用将命令做成选择菜单要更好一些。假设我们现在这样一个脚本,脚本执行命令时bsu,  类似git,脚本有两个一级主命令pushbaseline, createrepo,然后这两个一级主命令下还有若干选项pushbase

2013-12-31 21:56:13 29372 9

原创 通用makefile是如何炼成的(VIII)

” 停在这里不敢走下去,     让悲伤无法上演 下一页你亲手写上的离别, 由不得我拒绝 这条路我们走得太匆忙,  拥抱着并不真实的欲望,   来不及等不及回头欣赏“(摘自《步步惊心 》片尾曲 《三寸天堂》)走到这里,实际上我们的makefile框架已经是搭得差不多了。这一路小跑过来,感觉一切都很美好,实际上我想,我们只是太匆忙,来不及细细回想。如果

2013-12-26 22:31:01 5952 1

原创 通用makefile是如何炼成的(VII)

上一次我们试图引入多模块,结果失败了,今天我们来帮助失败实现做母亲的愿望。在正式开始之前,先做一个孕前检查我们上一次的失败原因有两个1. 编译目标重定义。2. 一些变量定义被覆盖。这些实际上是递归形式的多模块makefile必然要遇到的两个问题。对症下药的药方就是makefile中的“多规则目标”(具体参看makefile必知必会),简单而言就是三句话:makefile允许目标的依赖关系通过多个规则定义,但是实现该目标的命令只能在一个规则中定义,实现时会自动合并该目标所有的依赖关系。下面来

2013-12-26 21:54:56 1906 6

原创 通用makefile是如何炼成的(VI)

今天我们尝试引入多模块,这次很有必要的。模块化开发嘛既然是多模块,首先应该引入模块的概念,module.mk. 直接将main.mk中的内容移动到module.mk即可编译时就会发现一堆错误,主要是有这么几个问题1. 提示编译目标clean重定义。 这个原因是makefile允许目标的依赖关系多次定义,但是实现目标的命令只能在一个规则处定义。当我们include多个module.mk时,显然clean目标被重复定义了2. 有些变量的值有些莫名其妙了,特别是OBJS, DEPS,等,

2013-12-24 22:09:48 2170

原创 通用makefile是如何炼成的(V)

相关的生成obj的编译规则,自动导出头文件依赖关系的命令,以及生成可执行文件的规则,都集中到executable.mk。这时,我猜你肯定会立马相当,是不是还要有一个static-library.mk, shared-library.mk?binggo,这是必须的。(这里简化起见,我只讨论static-library.mk)。当开始专注于编写static-library.mk时,会发现obj的生成规则可以复用,所以我们又将obj的生成规则集中到object.mkTARGET:=hello.exe#

2013-12-24 22:07:53 3123 4

原创 通用makefile是如何炼成的(IV)

要解决这个头文件依赖关系的自动推导问题,呵呵,GNU中直接有尚方宝剑MMD,MF, MT。走到这里,感觉人生已经无欲无求了,通用makefile真的已经通用了。However,我又是看得太远,看这段makefile,我想到两个问题1. 上面的生成obj文件和.exe文件的代码是很形式化的,如果可以应该同product一样,单独归类到某个文件夹中,防止在修改makefile时不小心改了这些代码2. 如果我是多模块编译,怎么办呢?路漫漫其修远兮,吾将上下而求索...

2013-12-24 22:05:07 2005

原创 通用makefile是如何炼成的(III)

类似于产品信息,对平台相关的信息,我们也提供了一个定制化途径,通过加载PLATFORMS_SPECS指定的mk文件,定制平台信息。对System,我们没有提供额外的客制化手段,这是因为操作系统是固定的,不会在编译过程中发生改变,一般直接在system.mk中配置即可。

2013-12-23 19:58:13 1719

原创 通用makefile是如何炼成的(II)

上一次我们完成了圈地运动,顺利拍下一块叫做build的地块。今天,我们就要在上面立个牌坊一般情况下,我们总会在makefile中加入一些产品信息。比如产品名称,版本号,以及产品的特性开关(宏),等等。今天的工作就是加入产品信息,并同时与makefile解耦。

2013-12-23 19:57:00 1592

原创 通用makefile是如何炼成的(I)

这个系列会一步步的从最简单的makefile逐步导向一个较为通用的makefile(没有“复杂”两字)。您可以在这个过程中,学到makefile的基本语法,也可以学到makefile的常见技巧,同时我相信,您也会对如何做代码修改有所领悟

2013-12-23 19:53:00 1711 1

转载 windows下git bash 乱码的问题解决

http://blog.csdn.net/self001/article/details/7337182

2013-12-12 23:19:54 836

原创 makefile必知必会(II)

makefile必知必会(II)定义变量makefile的变量定义有三种方式1.        立即赋值 a:=b2.        延迟赋值 a=b3.        条件赋值 a?=b4.        附加赋值 a+=b它们之间的区别是,第一种方式,会立即计算b的值,并赋值给a;第二种方式,相当于C++和java的引用。如果后面b的值改变了,那

2013-12-11 23:06:33 6094 2

原创 最新pydev(3.0)安装后 没有菜单显示的问题

下载最新的pydev,安装过程一切正常,而且查看已安装软件时可以看到pydev,但菜单栏和设置中就是没有pydev,也不能新建python工程。原因:最新pydev要求Java7,故将jdk升级到1.7后,重新安装一遍pydev就可以正常看到菜单了。 下面是官方release说明:Release 3.0From now on, PyDev requires

2013-12-03 23:32:49 3631

原创 makefile 必知必会

Makefile 必知必会Makefile的根本任务是根据规则生成目标文件。规则一条规则包含三个:目标文件,目标文件依赖的文件,更新(或生成)目标文件的命令。规则:                目标文件>:依赖文件>         更新目标的命令>  PS:更新目标命令必须以tab开头,这个有点恶心。Example    

2013-12-02 22:54:39 4730 1

转载 编译链接5大潜规则

转自:http://blog.csdn.net/zdl1016/article/details/9015447潜规则1:当一个符号在多个目标文件(.o)里同时出现时, LD报错. 提示符号多重定义.当一个符号在多个静态库(.a)里同时出现时, LD不报错, 以第一个遇到的为准. 并且不会有任何warning提示 !!! 这个潜规则可能导致很多意想不到的问

2013-12-02 21:42:59 1248

转载 C/C++ 头文件以及库的搜索路径

转自:http://blog.sina.com.cn/s/blog_7195909a0100zi7i.html关键点: 1. #include  不会搜索当前目录                2. 使用 -I 参数指定的头文件路径仅次于 搜索当前路径。               3.  gcc -E -v  可以输出头文件路径搜索过程C++编译

2013-11-28 22:16:11 40101 2

原创 设计模式推演——装饰已有对象(Proxy/Decorator)

上一篇文章中,我们提到OO中复用的方式有两种,组合和继承。一般情况下,应该尽可能使用组合的方式。现在以复用为基本需求,推演若干常见组合型模式1. Decorator模式 需求:我们已经有一群对象,现在想统一为这些对象添加若干新特性。更重要的是,这些新特性可以反复叠加于某个对象,或者只选择部分特性作用于某个对象。条件:如果这个特性的实现不依赖于具体的对象,就如同添加一个装

2013-05-08 23:33:37 1613 1

原创 设计模式推演——整合已有系统接口(Facade/Adapter)

上一篇文章中,我们提到OO中复用的方式有两种,组合和继承。一般情况下,应该尽可能使用组合的方式。现在以复用为基本需求,推演若干常见组合型模式1. Facade模式 当整合已有系统接口时,或者跨层调用接口时,如果出现a. 觉得接口过多。那么可以根据特定的应用情景,提炼出一个最小覆盖子集,或者只是最常用的接口集。b. 觉得接口难用。那么可以通过封装,对原来做一些变形。这就是

2013-05-08 21:46:58 1501

原创 设计模式推演——组合与继承

OO中,复用代码可以有组合和继承两种方式,正如广大人民群众所论述的,尽可能使用组合。这里我再不厌其烦的说明一下理由:1. 组合比继承在框架结构上要简单,不会造成过深的继承层次。2. 组合是黑盒重用,抽象层次更高。其实上面这两条我觉得也没啥,重点还是下面三条:3.组合可以在运行时动态选择复用的对象,而继承不行。直接上图,相信您看一眼就明白了当Stack复用Sequen

2013-05-05 23:24:15 3754

doxypypy--- Doxygen filter for Python

一个用于将python文档化的doxygen的 inputfilter。 原理是将python的docstring转换为类java doc风格的## #注释。然后由doxygen去自动化生成文档。这个版本增加了中文支持。原版地址https://github.com/Feneric/doxypypy

2014-08-24

TCPParser -- follow tcp stream by python

wireshark自带的follow tcp stream提取出的stream 数据没有时间戳等其他信息,在分析数据的延时和丢包问题时就有些力不从心了。这里简单用python实现了一个简单follow tcp stream功能,同时保留了tcp信息。

2014-08-20

CommonMakefile的帮助文档

对CommonMakefile的帮助文档,概要介绍了如何使用、实现原理、定制扩展等。虽然不是很完整,但聊胜于无,现在工作也比较忙,短期内都不会再补充了。

2014-08-12

通用的makefile模板

通用的makefile模板,支持模块化编译,支持多平台,支持多项目配置。 简单配置,只需添加源文件列表和指定编译目标,就可以直接编译。 支持添加test。 默认包含gtest测试样例

2014-01-14

开发策略培训示例

开发策略之宏控使用

2013-11-27

pydev的eclipse插件

pydev的eclipse插件

2013-11-27

C++必知必会的读书笔记

C++ 必知必会的读书笔记,个人觉得这本书是对C++最精华的介绍,全书很短,但是要点一个不落,如模板推导机制,模板重载机制,名字查找,协变性

2013-04-10

重构——改善既有代码的示例代码

大部分取自《重构——改善既有代码》一书,部分取自其他书籍或者自编。 每一项重构对应一个package。 CodeRefactor 工程是重构前的代码 CodeRefactorExcise 是重构后的代码 里面的重构步骤与《重构》一书微有差异,差异点主要是为了更适合的应用Eclipse自带的重构选项。

2013-04-10

windows下的android源码的批量git处理脚本

windows虽然可以直接下载android源码, 但由于没有repo工具,只能手动地一个一个地去处理Git仓库,比较繁琐。 这个工具可以实现批量处理git 命令,包括git clone, pull, checkout等等。 使用方法: 启动git bash, 输入python Gitbat.py -c "git clone" -e即可。

2012-06-30

C++编程规范

很不多的一份近似于工具书的C++学习资料。书名不太好,有歧义。此书不是讲述C++的代码规范,而是讨论设计规范。C++进阶人士绝对应该看一看的好书。

2012-06-28

STL C++标准模板库参考手册

C++标准模板库的参考手册 小巧玲珑,查阅方便。在理解STL基本原理后,此书既可以温习之用,又可以做字典查询之用。

2012-06-28

C/C++参考手册

简明的c/c++参考手册 如果需要快速索引某个函数或者知识点,这就是您想要的。 里面同时包含了C的标准库的函数说明。

2012-06-27

Adb log查看工具之excel 模板

这是填充形式的excel模板 将其重命名并覆盖原来LogViewer/Util/log_template.xlsx 即可

2012-06-23

android adb log查看工具

人见人爱的adb log 查看工具,您值得拥有! 有时候需要分析一个adb log,但是将log从ddms保存为文本文件后,不能再用ddms打开查看,而一般的文本编辑工具查看这些log时都不是很方便。 这个工具巧妙地利用了Excel的数据筛选功能,使可以用excel查看log,而且效果更胜于ddms。

2012-06-23

深入C++对象模型的读书笔记

深入C++对象模型的读书笔记 主要是将C++对象模型的内容做了提炼,关注更常用的一些知识。 内容基本依照原文,未作改动。实验中,也感觉此书与当下C++编译器脱节严重,有些东西不是太适用了,但仍不失为一份好的参考资料,但不可当作标准。

2012-06-22

C++ProgrammingGuide

讲述C++入门基本知识,但绝对不简单 主要内容只有几点 构造函数、析构函数、拷贝构造函数、赋值运算符 运算符重载,包括如何重载各类运算法及注意事项 对象的内存布局,参考自 深入C++对象模型

2012-06-22

progit中文版

好书 人手一本 居家旅行 出门打工 码工必备 中文版的 里面可能夹杂了一些注释

2012-06-22

Git常用操作

绝对是平常最常用的操作 git常用操作 一、仓库创建 2 1. 本地新建一个git仓库 2 2. 本地克隆一个远程仓库 2 3. 同步远程仓库代码到本地 2 4. 同步本地代码到远程仓库 3 二、基本配置 3 2.1. 给Git着色 3 2.2. 设置文本编译器 3 2.3. 设置比较工具和合并工具 3 三、基础知识 3 git中文件的状态分类 3 三、代码提交 4 3.1. 查看目前代码的修改状态 5 3.2. 查看代码修改的内容 5 3.3. 暂存需要提交的文件 6 3.4. 提交已暂存的文件 6 3.5. 同步到服务器 6 四、代码撤消与回退 6 4.1. 回退已提交的代码 6 4.2

2012-06-22

git基本操作

比较贴近应用的git操作介绍 git基础操作 一、仓库创建 1 1. 本地新建一个git仓库 1 2. 本地克隆一个远程仓库 2 3. 同步远程仓库代码到本地 2 4. 同步本地代码到远程仓库 2 二、基本配置 3 三、基础知识 3 git中文件的状态分类 3 三、代码提交 4 3.1. 查看目前代码的修改状态 4 3.2. 查看代码修改的内容 5 3.3. 暂存需要提交的文件 5 3.4. 提交已暂存的文件 5 3.5. 同步到服务器 6 四、代码撤消与回退 6 五、提交记录查询 7 六、分支管理 7 1. 克隆代码 7 2. 创建本地工作分支 7 3. 删除分支 7 4. 切换分支 7 5. 合并分支 8 七、应用标签 8

2012-06-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除