Git版本控制教程
作者:郑郁正
最简操作说明
一、建项目
1、 建目录:在你想存入的地方建一个目录,准备用于一个项目的版本控制;
2、 初始化:从资源管理器中进入该目录,鼠标右击建立空仓;
3、 装入文档:将你准备好的一个项目,整个项目目录和文档拷贝到该目录下;
4、 建立关联:鼠标右击选中,加入所有出现在弹出框中的项目录文档;
5、 原始版本:鼠标右击选,产生原始版本。
二、分支
1、 创建分支:鼠标右击选中,填写新分支名称;
2、 进入分支:鼠标右击选中,选择进入的分支名称;
3、 同步最新版本:修改完后选中,保持最新版本同步;
4、 提交:Git Commit提交分支;
5、 合并:Switch/Checkout回到上级分支;选中,合并指定合支。
三、拷贝
拷贝后就是一个完整的版本仓库,所有操作与分支相同。
前言
我一直从事单片机的应用开发,几十年来编写大量的代码,主要以汇编程序和C语言程序为主,也编写过部分VB和VC的程序,偶而也写一些C++的程序。单片机的程序大部分都没有基于操作系统,按前后台的方式编写成简单的控制程序,在产品中也使用过DOS、uCos、Windows和Linux等操作系统。在编程设计中,源码版本经常分不清楚,导致同样的错误重复出现,代码重用性能极差,浪费大量的时间和人力,也导致了产品稳定性较差。
作为60年代非计算机专业的人,大部分都没有学过软件版本控制的知识。在2000年左右,曾经按公司使用过CVS,不过当时将CVS仅作为备份工具,每天23时定时备份硬盘的项目到磁带上,没有理解CVS的功能和应用目标要求。
近来参与ACCTON公司成都的研发中心管理工作,重新接触软件版本控制的问题。SVN简单易学易用,适合版本集中控制,也是很多公司的首先;而GIT稍为复杂些,适合人员分散开发的分布式版本控制。Linux项目就是基于GIT开发的,GIT拥有极为广泛的用户人数,所以本文就选择了GIT。
有关GIT的教程,网上很多,考虑得非常详细周全,我也是从网上学习的,由于之前没有学习过版本控制方面的知识,很多概念不清楚,相当从零开始学习,经过一周时间的实践,初步入门了。在此对所有无私的贡献者深表谢意。本文以我个人的理解编写一点说明,作为GIT教程补充,不足是否正确,请各位读者多提意思。
有关GIT安装
我在网上将Windows版的CC、SVN、GIT都下载了一份。其中SVN和GIT是合并在一起的,从google code上下载的TortoiseSVN-1.8.0.24401-win32-svn-1.8.0和中文补丁LanguagePack_1.8.0.24401-win32-zh_CN。
由于CC较为复杂,我让研究生试了一下,问题较多,不太容易入门,也许是盗版的原因吧。
SVN开始时出了一些问题,原因是没有基础知识所致。我按网上的教程,建仓时托管到google上,在选择仓库(Repository)类型时用于GIT,而在客户机上用SVN下载(Checkout)不成功,后来搞了半天才知道SVN下载不了GIT仓,当然GIT也不能直接下载SVN仓。还一个不方便的是托管到google上要求网络状态较好,否则经常连接不上。建议在本机中做仓学习,一会就可以用了。
我安装了GIT英文版和中文版两种,建设大家用英文版的,中文版菜单项目较多,不知如何使用。另外网上很多教程直接讲述是GIT的命令,主要是针对Linux环境的,而安装Windows环境下的GIT有点差别,好象少了一些命令。另外安装Windows版本的GIT没有建立path变量指向GIT,进入DOS命令环境时,除git命令外都找不到,在使用时只好修改PATH环境变量:PATH=%PATH%;GIT的BIN目录。比如我将GIT安装在D盘的“Program Files”,在DOS中进入你的GIT仓目录后,修改PATH=%PATH%;d:\Program Files\Git\bin。
简单用法说明
一、创建原始项目仓库
1、 用资源管理器(explorer)在本机的某个盘上为仓库(Repository)建一个目录“Git版本控制教程”,如图1所示。
2、 在资源管理器中打开进入“Git版本控制教程”目录后,鼠标右击弹出如图2所示的“资源管理器的菜单”,选择“Git Create repository here…”,弹出图3的内容。直接点击“OK”即在目录“Git版本控制教程”中做好了一个空仓。空仓中看不到任何东西,实际了建立了一个隐藏目录git,当前没有必要关心它。
3、 在目录“Git版本控制教程”中建立目录树和文档(或程序代码)后,回到目录“Git版本控制教程”中鼠标右击弹出资源管理器的菜单,选择图2中的“tortoiseGit”弹出下级菜单如图4显示的一部分,选择功能“add”后弹出一个文档列表框要求你选择要加入仓中的文档和目录,如图5所示,“Git版本控制教程”目录中我正在编写本文档“Git版本控制教程.doc”,多余的文档我不想加入仓里,所以我只选了文档“Git版本控制教程.doc”。图5中单击“OK”后弹出图6,图6中通常选“OK”,而后面的操作才选“Commit”实现项目版本提交。
图1 为GIT仓建一个目录“Git版本控制教程” | 图2资源管理器右出菜单 |
图 3 执行“Git Create repository here…”弹出的内容 | 图4 Tortoise下级部分功能 |
4、 完成了命令add后,你可以看到所选文档前出现一个红颜色的感叹号,表示该文档有变化(因为之前仓里没有该文档,所以也表示发生出变化),当所有修改完成后,你让为可以提高一个新版本入仓时,仍然回到目录“Git版本控制教程”鼠标右击弹出菜单,选择“Git Commit ->”master”…”,弹出图 7要求编写本次版本说明信息“Message”,随便在图7的上部Message框中写入你要说明的版本相关信息,然后点击“OK”即可,在其后弹出的窗口中选“CLOSE”即可。现在你可以看文档前的红颜色的感叹号已经变成绿色符号
| ||
图5 命令add弹出的文档列表框 | 图 6 命令add完成后弹出的内容 | |
|
| |
图 7 命令commit弹出的版本信息填写窗口 |
二、建立分支Branch
所为分支,就是制作一个副本用来修改,也可以制作多个分支副本用不同方法修改,所有修改过程都不影响原来的正本,此如正本为M,不同时间可以产生A、B、C三个分支副本,三个不同的人分别在三个副本上修改,对正本M没有影响。修改正确的副本可以与M合并产生新的正本。
分支是一种继承关系,在创建新的分支前要注意当前所在分支,用资源管理器进入项目目录后,鼠标右击后弹出的菜单中部分如图8所示,其中有说明当前分支为modify,图9表明当前分支为Master,Master是主分支,一个项目仓库只有一个顶层分支,就是Master。
图8 查看当前分支情况 | 图9 Master分支 | 图10 创建分支 |
产生新分支的方法是选中“TortoiseGit”后弹出其右侧菜单中选择“Create Branch…”,在弹出的输入框输入新分支的名字即可。输入框中也可以看到分支的断承(Base On)情况。
创建分支后,要进入分支里修改,就要切换到分支中去,方法是选中“TortoiseGit”后弹出其右侧菜单中选择“Switch/Checkout…”,从弹出的框中点Branch右侧的下三角符后列出本项目仓库中的所有分支,如图11所示,然后点击要切换进入的分支即可。
图11 Switch/Checkout分支切换 | 图12 PUSH分支填写 |
分支修改完后,必须要提交commit,特别是增删文档后,否则当你切换到另外的分支时文档目录不会变化,感觉别的分支的文档也被增删了,这可以是当前版本GIT的BUG。
修改分支测试正确后,通常是PUSH回到上级分支中。但是,当前版本的GIT有点问题,PUSH只能到一个空分支中,也就是在图12中的Remote中输入一个不存在的新分支。然后切回到上级分支后再用Merge命令将这个Push上来的分支合并。感觉PUSH是多此一举,回到上级分支后直接Merge合并即可。
分支修改后,通常上级正本分支也可能被别人修改成新的版本,为了与最新版本同步,有必要使用新版本的正本,此时必须用命令pull拉取新版本的正本。