Git教学:初学者使用心得分享(Windows)

0

前阵子刚接触git时,网络上很多git文章都很零散,针对windows平台的教学也不多 (也有发现一些文章像是写给鬼看的XD),让身为初学者的我痛苦指数一直上升,在使用一阵子后就想试试看整理一篇目前理解的使用心得。

先说明我的环境是 windows 7,目前主要写的是php。之前使用版本控制软件的经验是有用过SVN,且是在windows下用TortoiseSVN,做一些简单的操作,并且没架过SVN server。先假设您不太了解什么是版本控制,然后最近听说Git很火红,也想玩看看。

什么是版本控制?

开发项目时,开发者会一直写入新的代码,或放进新文件。如果有天出事了,某个功能以前明明可以跑,但突然挂点了,通常我们会回头去看相关的代码,试着找出问题并修复。但如果项目规模不小或者是由很多人一起开发的,就会大大增加debug的难度。

版本控制软件让我们可以储存项目不同时期的版本,如果每次有修改就存下一个版本(有些叫check-in,有些叫commit),出事时就可以回溯到之前还能正常执行的版本,并且比较两个版本间有何不同,找出引起问题的代码。

另外有一些情况是:如果你想开发新功能,我们可以利用版本控制软件,在项目中开一个分支(branch)来发展看看,或实验看看,如果成功了,又能合并(merge)回原来的开发主线。

而目前版本控制做得最棒的听说是Git,所以我们就要来试玩看看。

Git是什么?

Git就是一套版本控制软件,相对于subversion(SVN)的中心式版本控制,git是分散式版本控制,几乎什么事都在本机进行,设计上「只会增加资料」,因此不要太怕出事,东西都可轻松复原。每个开发者的本机端都会有完整的代码库,都能独立作业,不受开发主线的拘束,不需网络连线也能工作。(这些描述都是参考本文最后附的参考资料,有个超棒的Git教学视频,有兴趣可以过去看看)

安装Git

要在windows上安装Git,目前并没有太多选择。我是安装msysgit,网络上找都有安装说明,你在安装上应该不会有太多困难。记得勾bash(命令列)和gui,bash就是命令列操作模式,gui是图形操作介面,但个人感觉git gui不太好用,如果真的不想用命令列,不如安装TortoiseGit(着名的乌龟系列…),它的ui相比之下好用很多。

安装完后,你可以试着在本机任一目录上按右键,然后应该能在选单上看到 Git GUI here 及 Git Bash here 这两个选项。后面文章若提到要执行Git命令,就是在目录上按右键,选择 Git Bash here,它就会跳出Dos视窗,你就可以针对这个目录执行Git命令。

每个开发者都拥有自己的仓库(Repo)

接下来介绍安装完后,我们如何利用Git「自己跟自己玩」。白话来说,就是在自己的电脑上,自己写code后把变更提交(commit)到自己本机的仓库(Repo)里。

Repo是repository的简称,指的是仓库、代码库、版本库…,简单来说,Repo就是一个受Git版本控制的目录。你可以先找一个空文件夹执行git init来建立新的Repo,若你有装TortoiseGit,就可在空文件夹按右键,选择Git create repository here,意思一样。

当然若你有现成的项目目录,也可以直接把它建成Repo,操作跟上述相同。

执行git init后这个资料夹就变成一个Repo了,里头会多一个名叫.git的目录,而Repo在日后进行版本控制时所需的相关资讯都会存放在这个.git资料夹中。(.git目录若砍掉了,这个目录就不再是一个Repo了)

现在Repo目录里啥都没有,所以可以先随便新增一个README来试玩看看,执行:

touch README

执行后就会多一个空白的文件叫README,如果要你放进其他的文件试试看也行,就直接copy放进来吧。

这时我们的repo已经有新文件了,但都还没受到版本控制(untracked),不在版本控制清单中的文件,就不会受到git控制,也就是你要把代码提交变更(commit)至repo时,这些untracked的文件都不会被放进去。所以要执行add,让文件们进入所谓的staged状态,才能接着把它们commit进Repo中。

要把所有文件都加入staged状态,执行:
git add -A

git add .

要把个别的文件加入staged,执行:

git add 主文件名.副文件名

如果有些文件你不想要再让它受到版本控制了,也就是要把它unstage,那可以执行:

git reset 主文件名.副文件名

好的,现在确定好要commit第一版代码了,所以可以执行:

git commit -m 'Initial commit'

也就是把所有文件commit进repo,并且附上’Initial commit’的说明注解。而日后,如果commit过的文件有再修改过,也需要再add一次成为staged状态,然后再commit它们。

使用TortoiseGit就很方便了,按右键选择选单中的Git Commit -> “master”… 按下ok就可以帮你commit了。

在操作过程中,如果想知道目前Repo中的文件们到底是什么状况,到底谁要add,谁要commit,可以执行:

git status

了解了目前文件的状况,如果想要检视一下这个Repo之前commit的历史记录,可以执行

git log

(记录显示会一页一页停住,按个q就会跳出来)

在我们每次commit后,都会产生一个新的代码版本,而这个版本都会有个落落长的唯一编号,日后要进行版本控制的操作时就是认这个编号。

出事了,我要回复上一动!(or 上上上..一动)

现在我们可以自己写code,自己commit了,天天记录新进度,感觉很踏实。但有一天发现某功能挫屎了。也许你确定上礼拜这边还没问题的,或某一版一定没问题,这时我们可以利用Checkout来回溯之前的版本:

git checkout xxxx .
xxxx指的是版本编号的前四码。

若您使用TortoiseGit,可以点选「Switch/Checkout」这个选项,如果您想切换Branch,可以在此选Branch并切换过去;如果您想回溯程式版本,就选Version,然后点一下后面的…按钮,就会出现如下的画面:

git_tutorial

在此你可以看到此Repo所有Commit过的版本,有分支示意图,也有日期、commit注解等,选择你要的版本把它Checkout,就能回溯了。

本篇介绍了如何自己跟自己玩,如果要多人一起玩,要怎么作呢?一定要架Git Server吗?下一篇教您如何利用Dropbox作为Git Server,简单又好用!

发表评论

您的邮箱不会公开,当您的评论有新的回复时,会通过您填写的邮箱向您发送评论内容。 必填字段 *

为何看不到我发布的评论?

正在提交, 请稍候...