让Git成为个人工作备份利器

fmms 12年前
     <h2>前言</h2>    <p>不要把这篇文章当做给编程人员的技术文章,即使你对编程一无所知,按照这篇文章的指引一步步学习,仔细模仿,也可以很容易地学会如何去做。更重要的 是,这篇文章将让你介绍如何让git成为你的工作日志,成为你的备份工具,成为你的项目管理软件。没错,git让这一切变得如此简单。</p>    <h2>背景</h2>    <p>OK,什么是git? Wikipedia(<a href="/misc/goto?guid=4959501014744093403">http://en.wikipedia.org/wiki/Git_(software)</a>)告诉我们:“<strong>Git</strong><span> (</span><span class="nowrap"><span class="IPA" title="Representation in the International Phonetic Alphabet (IPA)"><a title="Wikipedia:IPA for English" href="/misc/goto?guid=4959501014832933759">/</a></span><span class="IPA"><a title="Wikipedia:IPA for English" href="/misc/goto?guid=4959501014916856243"><span title="'g' in 'guy'">ɡ</span></a></span><span class="IPA"><a title="Wikipedia:IPA for English" href="/misc/goto?guid=4959501014916856243"><span title="short 'i' in 'bid'">ɪ</span></a></span><span class="IPA"><a title="Wikipedia:IPA for English" href="/misc/goto?guid=4959501014916856243"><span title="'t' in 'tie'">t</span></a></span><span class="IPA" title="Representation in the International Phonetic Alphabet (IPA)"><a title="Wikipedia:IPA for English" href="/misc/goto?guid=4959501014832933759">/</a></span></span><span>) is a </span><a title="Distributed revision control" href="/misc/goto?guid=4959501015131224401">distributed revision control</a><span> system with an emphasis on speed.“ 这是一个分布式版本控制系统。听起来似乎很霸气,那么它是谁开发的呢?这个名字就更霸气了,<span> </span><a title="Linus Torvalds" href="/misc/goto?guid=4958346543670131514">Linus Torvalds</a>——Linux之父。</span></p>    <p><span>什么叫版本控制系统呢?</span></p>    <p><span>我们来举个例子。比如说,你要写个商业策划书,经过几天熬夜,总算在2012-01-01写了一个初稿 proposal.doc。又经过两天的奋战,你对之前的文档做了更深入的细化,于是把之前的文件改名成了 proposal- 2012-01-01.doc 作为备份。后来经过你和老板的激烈讨论,并对文档反复修改,终于在2012-01-09把第7版交给了老板,算是完成了这份工作。回头看看当前的工作文件 夹,呵,充满了名为 proposal-2012-01-01.doc,proposal-2012-01-03.doc。。。proposal- 2012-01-09.doc 的文件。你不舍得删了它们,顺手打个包压缩下扔进了自己的归档文件夹里,也许永远都不会看它们了;即使半年后想要来参考一下,你也顶多是看看最新版的文 件,那些历史版本文件之间的关系恐怕永远也记不起来了。</span></p>    <p><span>这是个很普遍的例子,任何用电脑写过报告的人都会有这种经历。保存某个修改的文件时我们习惯于给较早的版本加个日期(或者其他你感兴趣 的方式)做为备份,生怕自己对稍后的某个修改不满意好恢复回去;如果有强迫症,估计你恨不得写一行备份一次——如果你学会了git,恐怕这种强迫症会更加 强烈,因为用起来实在是太爽了。这就是一个非常朴素的版本控制系统,你人为的给某个文件加上时间的标记,把编辑的某些里程碑保存下来,方便自己将来查阅、 备份、恢复。</span></p>    <p><span>既然我们有这么普遍而强烈的需求,版本控制系统软件自然备受关注,并不断更新升级。从 CVS 到 SVN 再到 GIT,版本控制系统的管理模式从集中向分布演变。git的分布式特点就在于,虽然我们可以有一个最核心的中央服务器来管理所有的文件,你可以在本地生成 一个局部的版本控制系统,你的版本历史都可以先在本地保存,直到获得一个满意的版本后,再提交到服务器中。对于个人来说,甚至完全不用理会中央服务器是否 存在,自己玩单机版的版本控制就足够了——本文的目的也就在于教会你怎样玩转单机版git。</span></p>    <h2><span>准备</span></h2>    <p><span>工欲善其事,必先利其器。我们需要的软件很少,只有两个,TortoiseGit(<a href="/misc/goto?guid=4959501015306339812">http://code.google.com/p/tortoisegit/downloads/list</a>)和msysgit(<a href="/misc/goto?guid=4959501015400292973">http://code.google.com/p/msysgit/downloads/list</a>),前者是与 windows 的资源管理器(linux和mac用户借过一下)整合的git管理软件,后者是git的功能软件。</span></p>    <p><span>安装好TortoiseGit之后,重启电脑,鼠标右键里就会有这几个新的程序,git的相关功能都可以从这里访问到,连开始菜单都不要,是不是很方便?</span></p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/aa4ae04a1bfd527f45cddaae2bd3e066.png" width="403" height="123" /></p>    <p><span>(svn是另一个软件,请无视)</span></p>    <p><span><br /> </span></p>    <p>请选择setting,我们需要配置一下git的路径。</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/cada6968399c8a7420df53a5bc00f505.png" width="694" height="435" /></p>    <p>在红框里,我们要设置一下 git 的路径,就是你安装 msysgit的bin文件夹,比如说我的是 F:\software\develop\svn\git\PortableGit-1.7.8- preview20111206\bin,里面会有 git.exe 这个程序。</p>    <p>如此,我们的环境就配置好了,是不是非常简单?</p>    <p><span><br /> </span></p>    <h2><span>实战</span></h2>    <h3><span>基础知识</span></h3>    <p><span>接下来,我们要具体看看git如何成为我们备份的利刃。</span></p>    <p><span>先随便创建一个空白文件夹,作为我们实践的平台。</span></p>    <p>进入这个文件夹,鼠标右键选择 “ Git Create repository here...",弹出的对话框不用管,那个复选框不要选,ok即可。这个文件夹里就会出现一个隐藏的 .git 文件夹。如何显示隐藏文件夹?这个请放狗去搜吧。</p>    <p>ok,一个版本库我们就创建出来了。走到上级目录,你也许会看到,文件加上出现了一个绿色的对勾符号,表示这个文件夹已经受到了版本的控制。(这个图标的出现不一定实时,也许你要多刷新几次,甚至重启电脑才行)</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/e1d3038e405e4a0fd76df6b5785c6993.png" width="104" height="113" /></p>    <p>常见的图标有</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/06d8a0db6594f456c3ffb14e70da50a0.png" width="41" height="41" /> 这个文件(夹)很干净,是最新版本文件</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/d650c02387e0a07517b65fbb7eb252fe.png" width="44" height="48" />这个文件(夹)发生了修改,需要提交</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/c8e2bf0070990dd6e4214436f0482fde.png" width="42" height="39" />这个文件(夹)要添加进版本库</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/191320fa61b6637929cc6dfac1dc36c7.png" width="41" height="36" />这个文件(夹)没有在版本库中,需要添加进来(转为上一个图标的状态),或者忽略(转为下一个图标的状态)</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/1d7ed99db9549cd5e350d9ea32838dbb.png" width="44" height="47" />这个文件(夹)被忽略,不受版本控制</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/625266a0a2445ed8926b69ef0d3fbf2f.png" width="42" height="41" />这个文件(夹)里的内容发生冲突(这是最危险的情况,但是对于个人用户来说,几乎不会出现,出现的情况是两个人同时对一个文件做修改,后提交的人在更新时无法与前者完美融合时,这个不需要深入理解)</p>    <p>通过这么直观的图标暂时,你就能对自己的工作文件夹了如指掌,那些文件做了修改,当前工作是否需要提交,都一目了然。</p>    <p> </p>    <h3> 版本分支</h3>    <p>在进行更进一步操作时,有必要了解一下版本分支(Branch)的概念。版本分支意味着,你从当前的项目中弄出来一个拷贝,按照自己的想法胡乱修 改,你之后的所有版本历史都保存在这个分支里。如果你对这个分支很满意,就可以把这个分支合并到原来的主分支里(Merge),甚至直接让这个分支作为主 分支;或者你感觉到越改越糟糕,就直接回到主分支工作,仿佛什么也没有发生一样(当然这个新的分支要通过某些复杂的操作来删除,你也可以留着,作为自己惨 痛教训的警钟)。也就是说,分支为你提供了一个尝试某些新道路的空间。</p>    <p>作为个人用户来说,有一个主分支和一个工作分支就够了。主分支作为基准一直不变,工作都在工作分支上进行,这样主分支与工作分支之间的变化就记录了你的所有工作历史。</p>    <p>我们来具体实践一下。</p>    <p>首先,git有个不太人性化的“bug“,不能够添加空白文件夹,因此我们需要先添加一个空白文件,比如 test.txt,然后在文件夹上右键选择 “Git commit"</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/5cb83651371ce1ccef27ad4dd517eae6.png" width="261" height="79" /></p>    <p>选择添加的那个文件,写点message(git每次提交必须写上一些文字说明这次更新的内容,从而让你知道每个版本有什么变化)提交即可</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/d3196ca1decae45295b4c7be16dcdf8b.png" width="457" height="491" /></p>    <p> </p>    <p>在刚才的工作文件加上右键,选择 “Create Branch“</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/3d742692e3eec1c30ef0e5032c33a74c.png" width="466" height="289" /></p>    <p> </p>    <p> 随便取名比如 develop,确定即可。</p>    <p> 依然右键选择 “Show log“,出现如下对话框</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/1027e7f2b20bbb492d323568890ce363.png" width="644" height="571" /></p>    <p> 可以看到,我们已经有了一个版本历史,它详细记录了我们的改变。上面有两个颜色标签,红色的master和绿色的develop,这个代表了我们 的分支。master是我们第一次提交时系统自动生成的分支;develop是我们手动创建的。红色的代表当前的工作分支,绿色的代表存在的历史分支。我 们需要把工作分支切换到 develop。</p>    <p>在文件夹上右键选择 “Switch/Checkout", Branch里选择develop,再查看历史,我们就会发现,develop变成了红色。</p>    <h3>开始工作</h3>    <p>接下来我们就可以随心所欲的工作了。编辑一下test.txt,新建文件夹,添加word,excel文件,总之,随便工作。你会看到,修改的文件 加了红色的叹号,新加为被版本控制的文件加了蓝色的问号,对于蓝色问号,你可以选择右键里的 “Add“让它变成蓝色的加号(或者有时会一步到位变成绿色的对勾,这个不重要),或者不管他。</p>    <p>然后在根文件上,选择 Commit,再来看看历史,就会发现你的工作记录了</p>    <p><span style="color:#ff0000;">Commit时会有一个让你输入用户名的问题,这个完全不重要,你随便写个用户名和邮箱即可.</span></p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/cdee160fdb17fe3214b66afcb3680837.png" width="707" height="646" /></p>    <p>可以发现,develop进步了一个版本,master还停留在原处。历史显示,test.txt被修改,一个word和excel被添加;文件夹信息不回被记录。</p>    <p> 双击下面的test.txt文件,它甚至会给你展示出这个文件发生了哪些变化。甚至连 excel 和 word 的变化也会给你选择合适的方式进行比较。</p>    <p><img style="width:685px;height:685px;" alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/62450d05f450042a0ac823f80cff57d5.png" width="788" height="789" /></p>    <p> </p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/7b0022bdb589b51fa43e7707332a924c.png" width="447" height="261" /></p>    <p><img style="width:696px;height:369px;" alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/e1808d17457e252becadd758814d43f9.png" width="1043" height="555" /></p>    <p> </p>    <p>令人震惊吧!没错,git会完全忠实的记录的一点一滴,只要你commit,系统就会为你保存下来一个历史记录(不必担心空间,它会采用很先进的方式进行增量保存,远比你每次都复制要节省空间得多)</p>    <p> </p>    <h2>结束语</h2>    <p>差不多已经把如何用git来进行工作的方法介绍完了,还有一个非常重要的功能没有说,怎么样恢复历史版本的文件呢?很简单,在想要恢复的文件上查看历史,选择revert即可!</p>    <p><img alt="让Git成为个人工作备份利器" src="https://simg.open-open.com/show/3e6d2a16c426d0f02e9a3d89e8252893.png" width="377" height="386" /></p>    <p> </p>    <p>即使你完全不懂编程,相信上面的讲解也可以教会你怎么样来使用了吧。赶紧来试试吧!</p> 转自:http://www.cnblogs.com/dabaopku/archive/2012/01/09/2316772.html