很多人有一种习惯吧,什么软件都要最新的,最好的。其实吧,软件就是工具,生产力工具,为的是提高我们的生产力。如果现有的工具已经可以满足生产力要求了,就没有必要换了。生产效率高低应当是选择工具的第一位。
开源世界的版本控制系统,经历了这么几代:
第一代,CVS,开创性的产品,至今很多古老项目仍在使用,但存在不少设计上的缺陷。
第二代,SVN,在CVS基础上大幅度改进,很快就取代了CVS的地位,现在的项目数量仍然非常庞大,而且SVN的缺陷不算多,很多商业项目似乎没有迁移到下一代版本控制系统的打算。比如Chrome就是使用SVN的。
第三代,Hg与Git。说起这两个,有种既生瑜,何生亮的感脚。这两个项目几乎是同时启动的,目标都是为Linux kernel提供一个开源可靠的分布式版本控制系统,同样优秀,只不过Git是Linus亲自带队做的,于是Git就成了Linux的选择。除此之外,Eclipse从原本的SVN转移到了Git,而Firefox与Python则使用Hg,国内的金山软件也使用Hg,而Cocos2d则是Git,孰优孰劣,不好说。
总的来说吧,前两代由于集中式管理的缺陷,现在用的肯定会越来越少,不过老项目往往不会轻易换。Git胜在功能强大,分支完善,败在设计复杂,难以理解。Hg胜在清晰易懂,功能完善,败在不利于从SVN迁移,相应的社区活跃度不如Github。
安装准备
首先你得安装windows下的git msysgit1.9.5
安装版本控制器客户端tortoisegit tortoisegit [32和64别下载错,不习惯英文的朋友,也可以下个语言包]
常规的使用方法
在任意空的文件夹点击鼠标右键,选择“Git 在这里创建版本库”
在上面的文件夹点击右键,选择“拉取(Pull)”
(1) 管理远端
其中,URL是远端版本库的git地址
注意,一定要把“localhost”改成IP地址,否则会出现如下错误:git did not exit cleanly (exit code 128)
(2) 生成PPK文件
在“开始”菜单,选择“TortoiseGit”中的“PuttyGen”
点击“Generate”按钮,然后,鼠标在图中红色方框的区域内不停的移动,即可生成密钥。
点击“Save private key”按钮,把生成的密钥保存为PPK文件。
确定生成。
(3) 完成clone库
3. 提交本地版本库
(1) 添加到本地库
鼠标右键点击如上图图标的文件,选择“增加”
表示添加到本地库成功。
(2) 提交到本地库
鼠标右键点击如上图图标的文件,选择“Git提交(C) … -> “master”…”
会出现提示,设置用户名和邮箱。
设置用户名、邮箱和签名密钥(PPK文件)
输入日志信息,完成提交。
4. 推送本地库到服务器
那么我们就可以把本地库推送到版本服务器了。
在本地库所在根目录(本机为D:\mydoc13\ssfc),点击鼠标右键,选择“TortoiseGit”-〉“推送”
完成推送。
创建git分支
主分支,开发新功能,创建的分支改bug,定期的将分支合并到主分支,对外发布的版本都新分支,改bug的版本,属于稳定版的。发版本成阶梯状。下面介绍一下用tortoisegit创建git分支的方法,个人觉得比较简单。
1.clone二个版本
clone 2个测试项目
这里的二个测试目录,都是主分支
2.testing_branch创建分支
创建分支
3.testing_branch切换到分支
第一步
第二步
第三步查看
到这儿分支就创建好了
4.测试分支
在testing_branch添加一个文件,然后add,commit,push,在到testing项目中pull,你会发现,什么也没有pull下来。
5.单独clone分支
clone新分支
默认是clone主分支的。
6.分支合并
第一步
第二步
第三步
git的分支和主分支,只是名称上的区别,其他没什么区别,不管是主分支合并到分支,还是分支合并主分支都是一样的。
合并后,到testing目录下,在pull,你会发现分支创建的文件,可以pull下来了
7.删除分支
删除分支前,首先要将分支内容合并到主分支,在将当前的分支,切换到主分支,就是上面第3步要做的事情,不过是相反的。
主要 branch
支援 branch
一:加入群组
项目管理员添加用户到群组,赋予权限(owner、developer…)。
二:拉取项目,建立分支
通过git clone拉取项目到本地,通过终端打开项目目录,创建自己的分支,并推送到远程项目仓库。
三:开发:发布任务、编写代码、提交代码并备注、回复任务、结束任务【每一次开发都要走这个流程,做到每一次代码改动都有迹可循:为什么做、怎么做的、提交结果】
1:发布任务
在issue处发布任务:任务标题、描述任务内容(需求)、指定任务接收者(可以自发自接,也可以项目负责人向指定人员发布任务)、里程碑(该任务处于项目中的哪个阶段)、标签(自定义一些标签去描述这个任务)
【同一个项目中的issue是自增的:每当有一个issue发布,都会有一个id生成,格式为 #数字 】
2:编写代码
任务接受者根据issue进行代码编写。
3:提交代码并备注
任务完成后,提交代码。
git commit -m "#issue ID 备注"
通过 #issue ID,将每次提交与所解决的issue对应起来。
4:回复issue,记录开发历程
在issue下发布comment,记录开发过程中遇到的问题、解决思路、最终解决方法。
其他人也可以在下面回复,参与讨论与指导。
5:结束issue
在一次或多次提交代码后,issue任务完成,就可以接受任务了,"close issue"。
四:wiki
可以在wiki书写 笔记、分享文档、内部知识共享。
五:代码重用
在Snippets分享常用的代码片段,以供重用。