使用 Git Extensions 简单入门 Git
—— 独立观察员 2015.11.25
前言
关于这个主题,之前我录了段视频教程,在本地看清晰度还可以,但传到优酷上就很不清晰了,即使是后来重制后还是一样不清晰,所以现在想整理成文字版。当然,大家还可以将我百度云上的视频下载下来观看,连同优酷的相关地址都附在文末了。
正文
说到 Git 呢,相信从事软件开发的都不陌生,是用于版本控制的,在全球范围内被广泛使用,相比于另一版本控制技术 ——SVN,似乎更受追捧一些,全球最大的代码托管平台 GitHub 使用的就是 Git 技术。
Git 与 SVN 的最主要的区别就是,Git 的代码仓库是分布式的,一般流程就是在本地拉一个服务器上仓库的拷贝,修改代码后先提交到本地仓库,然后再合并到远程仓库;而 SVN 的代码仓库是集中式的,一般就服务器上的一个,提交代码就是直接提交到服务器上的仓库去,这样如果网络不畅就无法提交了,那段时间就无法版本控制了。
还有一点比较明显的区别,不过我不知道我说的对不对,大家听且听之,自行判断。Git 由于有本地仓库,工作目录一般就在本地仓库那里,从文件角度上看不出两个分支的文件分别在哪里,似乎工作目录下同时只存在一个分支。而 SVN 则能够清晰地看到哪些是主干的文件,哪些是分支的文件。
长久以来,Git 都是以命令行方式使用的,而 SVN 在 Windows 上则有 TortoiseSVN 这样的强大的图形界面工具,这就形成了鲜明对比。对于刚入门的人,就会不由自主地偏爱上使用 TortoiseSVN 来使用 SVN,而对 Git 心生敬畏。其实 SVN 也是可以使用命令行来使用的,而 Git 近年来也有了图形界面工具,包括 TortoiseGit、msysGit(Git 版本控制系统在 Windows 下的版本)的 Gui、以及本文将要介绍的 Git Extensions 等。
我刚开始得知 Git Extensions 时,它是作为一款 Visual Studio 插件映入我眼帘的,在 Visual Studio 的插件库中可以下载,但好像好久没更新了(版本为 2.47.03)。后来(录完视频教程之后)我才发现原来其代码维护在 sourceforge 网站(版本为 2.48.05)。
一、现在我们来安装这个新版本(略去不重要的内容)
以下界面所示的三个工具,如果没安装过,则勾上让其安装。MsysGit 为 Git 的 Windows 版本,必须要安装;Kdiff 为对比 / 合并工具,可选安装,可以换为使用其它的相关工具;最后一个 Windows Credential Store for Git 用于在 Windows Credential Manager 中存储仓库的密码,这在老版本中没有,也安上吧。
安装 Git Extensions:
安装 KDiff3:
安装 Git:
将 Git 和一些 Unix 工具加入运行路径中:
跨平台项目不推荐选第三个,Windows 上推荐选第一个,所以就选第一个吧:
安装完成,Git Extensions 会弹出配置界面,如果有问题,一般就是选择一下相关组件的路径即可:
SSH 客户端,OpenSSH 是命令行的,PuTTY 是图形界面的:
二、接下来以使用 Git@OSC 网站为例
随便选个项目点击进入:
点击 Fork,即可克隆代码到自己的空间当中:
然后在自己的空间即可查看:
一般自己创建一个新分支:
保留原有的 master 分支不去使用:
因为点击那个双箭头的圈会强制从 fork 的源拉取代码来覆盖原有的分支:
可以更改默认分支、设置是否使用 SVN 来管理等:
配置分支保护,可将原有分支设为只读,避免自己提交代码时不小心弄混了:
复制代码路径:
在文件夹内右键,选择 "GitExt Clone…":
粘贴 url,然后分支我们先选 master 的,点击克隆:
然后可用 Pull 选项拉取代码到本地仓库:
View changes 选项可查看修改记录:
可以看到此时本地的 master 与远程(origin)是同步的:
使用 "Git Bash Here" 选项可打开一个专用的命令行窗口(Bash):
可直接以命令行方式使用(比如查看当前是哪个分支):
使用 Checkout branch… 功能可签出分支,这里我们将远程的 dlgcy 分支也迁出到本地:
这样本地就和远程一样也有两个分支了:
使用命令行也可看出:
使用 "GitExt Commit…" 选项可提交修改:
左上角区域放的是改动过的文件,点击紫色向下的箭头可载入单个文件或全部载入,载入到底下的提交区,右上角显示选中文件的改动内容,右下角填写改动信息,最后点击提交或提交并推送即可。
使用 Push… 选项可将本地仓库推送到远程仓库:
会要求输入(你在 oschina 网站的)用户名和密码:
切换分支就会切换代码,就有可能就会有不同了:
切成了 dlgcy 分支:
使用命令行提交更改:
使用命令行推送更改:
(由于之前将 master 分支设置为了只读,所以当时推送不成功;这次推送到 dlgcy 分支则是成功的。)
然后我们到网站上看一下,可以看到刚才的提交记录了:
此时查看本地的差异是这样的:
(因为本地 master 有修改和提交但未推送成功,本地 dlgcy 有修改和提交且推送成功)
附录
优酷地址:http://v.youku.com/v_show/id_XMTM2ODk0ODM2OA
百度云地址:http://pan.baidu.com/s/1kTzlC71