之前公司的一个项目使用SVN来做的版本控制,服务器设在我这台电脑上。然后是出于某些原因,我的电脑IP变了多次,每变一次就要重新绑定静态ip,甚是烦人。同时SVN这种集中式的版本控制服务在我关闭了我的电脑之后,其他小伙伴们就无法同步了。
于是乎也懒得去研究SVN是否支持远程云仓库的方式来共享项目,转投最近更火的Git。
Git是个好东西啊,可以直接remote到github的仓库上,不就解决了鄙人的问题么?不过github毕竟是开源的(除非你愿意每个月花几美刀去把仓库转私有),总不愿意自己公司的项目源代码随便被别人搜索到和下载吧。
于是乎便使用了一个最简单的办法——把版本控制服务(.git)托管到云服务器(网盘)上!
下面来唠嗑下实现的步骤。建议您先把本文全部看完一遍再动手尝试,防止逻辑混乱。
(一)首次将项目版本控制托管到云网盘上
⑴ 首先你要在百度网盘这里注册个帐号:http://pan.baidu.com ,即使你有自己的百度帐号了,依旧建议你重新注册一个公共的帐号,毕竟项目的小伙伴们要一同使用这个百度帐号来同步.git的。
注册并激活之后,在网盘里新建一个文件夹用于存放今后的同步文件,如下所示,我新建了一个叫 git 的文件夹:
⑵ 接着到 http://pan.baidu.com/download#pan 下载同步盘。下载并安装好百度同步盘后,用你注册的百度帐号登录,它会要你设置同步盘的位置,这里你随便选择一个文件夹,注意不是你项目的文件夹。如下图,我在F盘新建了一个gitbak文件夹来作为同步文件夹:
⑷ 接着它会让你选择网盘上的需要同步的文件,我们勾选上之前新建的 git 文件夹,点击“确定”按钮即可:
自此你就完成了需要在百度网盘上的所有操作,我们打开 F:gitbak 文件夹看看,会发现原本是空的文件夹下多了两个文件:
其中.baoche.cache 文件夹是百度云盘的数据文件夹,无需理会,而git是网盘从云端同步到我们电脑来的文件夹。只要我们修改了git文件夹里的内容,百度云网盘就会第一时间更新到云端。
搞定了百度云盘,我们要接着捣弄Git了,我们续着上方步骤⑷接着讲~
⑸ 没安装Git的朋友请先来 http://git-scm.com/download/ 下载并安装Git,安装方式很简单,各种Next即可,只是杀毒软件可能会询问是否允许该软件的操作,还是得留心下防止被阻止了。
装好之后,我们打开项目文件所在的根目录(比如我的项目根目录是D:VJProject ),右键并选择“Git Init Here”,告知Git这个文件夹需要做版本控制,然后Git就会在该目录下自动创建一个.git 文件夹用于放置版本控制信息:
⑹ 我们依旧在该项目根目录里点击右键,不过这次选择的是“Git Gui”,它会打开Git图形用户操作界面,我们选择“编辑”-“选项...”:
在弹出的窗口输入左右两处用户名和邮箱,再点击保存即可。此处填写的用户信息可以帮助我们以后在修改项目文件时,知道是谁做的修改:
保存后我们依次点击“缓存改动”-“签名”-“提交”,此举是将改动全部保存到你本机上(项目根目录的.git文件夹里):
⑺ 我们接着回到项目根目录文件夹,依旧右键,选择“Git Bash”进入命令行界面,输入命令:
该命令是将当前文件夹的.git库拷贝到网盘同步文件夹F:/gitbak/git下,回车后如下所示:
此时我们进入网盘同步文件夹F:/gitbak/git,会发现克隆成功(多了一个VJ.git文件夹):
该文件夹将作为我们远程提交的库(虽然它其实是在我们本机上的,算不上远程,但别忘了它会被同步到百度云网盘上),下一步我们将在Git中添加该.git文件夹为远程仓库。
⑻ 在项目根目录右键选择“git Gui”回到GUI主界面,我们点击“远端”-“Add”:
在弹出的窗口输入本机百度云同步到的.git路径信息:
(二)在其他电脑上共享云端的版本控制服务
通过上述的操作,我们把Git的服务变相托管到百度云网盘上,接着说说如何在其它电脑上共享这个服务。
⑴ 首先这台电脑得安装好Git,然后安装好百度云网盘,用之前注册的那个共用的百度帐号登录,然后选择要存放和同步云端文件的本机上的文件夹:
并选中网盘上已有的git文件夹:
点“确定”后百度同步盘就会把我们之前同步到云端的.git文件夹同步到当前电脑上:
⑵ 在要放置项目文件的地方新建一个文件夹(本例我们在G盘新建一个文件夹Project),然后在文件夹中点击右键,选择“Git Bash”:
在弹出来的命令行窗口输入
然后回车。此举会将项目文件都拷贝到我们刚刚新建的文件夹去:
你可以打开这个被克隆出来的文件夹,会发现项目文件都完好地拷贝在里面了:
⑶ 我们试着随便修改项目中的某个文件,然后在项目根目录点右键,选择“Git Gui”打开用户界面,然后依次选择“缓存改动”-“签名”-“提交”-“上传”:
上传的时候直接点“上传”按钮即可,它会自动帮你更新到本机的网盘同步文件夹(V:gitSyngit)去,无须像之前那样再点“远端-Add”来添加远端仓库了:
注意“提交”按钮是把改动提交到本机(项目文件夹),而“上传”才是把改动提交到远端仓库(百度网盘同步的文件夹)。你可以依照改动需求多次提交后再点上传也无妨。
另一点要注意的是,在新电脑上同步好远端git库后,要在gui上点击“编辑”-“选项”,然后输入这台电脑的操作者:
这样才方便以后查看版本变动信息时知道分别是由哪些小伙伴做的更改。
(三)协同合作
在上述的俩大步骤都完成后,我们看下如何在Git协同工作。
在你日常修改好代码后,请先点击“远端”-“从...获取fetch”来更新远端的库,也许你的小伙伴们对这个项目也做了修改不是么:
这一步仅仅是将远端库下载到我们本地,但并没有更新我们的本地库,我们还需要再点击“合并”-“本地合并”,在弹出的窗口选择跟踪分支来合并远端和本地的库:
这时候你就可以顺利上传了(如果远端库有变动,而你没有先fetch远端,Git不会允许你提交的,从而避免版本冲突)。
(四)其它
⑴ 消除gui上的中文乱码
在查看改动信息的时候(比如点“版本库-图示master分支的历史”),若代码上含有中文,在gitui上都会显示为乱码。解决方法是打开Git的安装目录,然后找到 etcgitconfig 文件,在里面修改或者加入下述代码:
再用gui查看中文内容就不会出现乱码了。
⑵ 无关文件不做版本控制
有时候有些文件虽然存放在项目中,但却无需做版本控制,比如我们上述例子中项目根目录上的.suo文件,它是VS产生的用户自定义配置记录文件,仅对本机用户有意义。
要让Git不记录这些文件的变动,我们可以在项目根目录的.git文件夹中找到info/exclude文件:
用记事本打开它后在最后加上:
保存即可,此举告诉Git无需记录任何.suo文件的改动。
当然有资源的公司和勤劳的你可以自行搭建一台服务器来托管项目,特别是当项目数据非常重要和敏感的时候,以物理隔离的方式放在局域网内无非是最安全的作法。
如果你的项目文件不会超过1G且团队成员小于5人,而且不怕超慢的连接速度的话,直接托管到Bitbucket上即可。