之前公司的一个项目使用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 clone --bare . F:/gitbak/git/VJ.git

该命令是将当前文件夹的.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 clone V:/gitSyn/git/VJ.git

然后回车。此举会将项目文件都拷贝到我们刚刚新建的文件夹去:

你可以打开这个被克隆出来的文件夹,会发现项目文件都完好地拷贝在里面了:

⑶ 我们试着随便修改项目中的某个文件,然后在项目根目录点右键,选择“Git Gui”打开用户界面,然后依次选择“缓存改动”-“签名”-“提交”-“上传”:

上传的时候直接点“上传”按钮即可,它会自动帮你更新到本机的网盘同步文件夹(V:\gitSyn\git)去,无须像之前那样再点“远端-Add”来添加远端仓库了:

注意“提交”按钮是把改动提交到本机(项目文件夹),而“上传”才是把改动提交到远端仓库(百度网盘同步的文件夹)。你可以依照改动需求多次提交后再点上传也无妨。

另一点要注意的是,在新电脑上同步好远端git库后,要在gui上点击“编辑”-“选项”,然后输入这台电脑的操作者:

这样才方便以后查看版本变动信息时知道分别是由哪些小伙伴做的更改。

(三)协同合作

在上述的俩大步骤都完成后,我们看下如何在Git协同工作。

在你日常修改好代码后,请先点击“远端”-“从...获取fetch”来更新远端的库,也许你的小伙伴们对这个项目也做了修改不是么:

这一步仅仅是将远端库下载到我们本地,但并没有更新我们的本地库,我们还需要再点击“合并”-“本地合并”,在弹出的窗口选择跟踪分支来合并远端和本地的库:

这时候你就可以顺利上传了(如果远端库有变动,而你没有先fetch远端,Git不会允许你提交的,从而避免版本冲突)。

(四)其它

⑴ 消除gui上的中文乱码

在查看改动信息的时候(比如点“版本库-图示master分支的历史”),若代码上含有中文,在gitui上都会显示为乱码。解决方法是打开Git的安装目录,然后找到 etc\gitconfig 文件,在里面修改或者加入下述代码:

[gui] encoding = utf-8 [i18n] commitencoding = gbk [svn] pathnameencoding = gbk

再用gui查看中文内容就不会出现乱码了。

⑵ 无关文件不做版本控制

有时候有些文件虽然存放在项目中,但却无需做版本控制,比如我们上述例子中项目根目录上的.suo文件,它是VS产生的用户自定义配置记录文件,仅对本机用户有意义。

要让Git不记录这些文件的变动,我们可以在项目根目录的.git文件夹中找到info/exclude文件:

用记事本打开它后在最后加上:

*.suo

保存即可,此举告诉Git无需记录任何.suo文件的改动。

当然有资源的公司和勤劳的你可以自行搭建一台服务器来托管项目,特别是当项目数据非常重要和敏感的时候,以物理隔离的方式放在局域网内无非是最安全的作法。

如果你的项目文件不会超过1G且团队成员小于5人,而且不怕超慢的连接速度的话,直接托管到Bitbucket上即可。

总而言之托管到网盘上也是一种新鲜好玩的做法,希望或多或少能给你一些小帮助。最后感谢烟波君提供的指导~共勉~

使用百度网盘+Git,把版本控制托管到云端的更多相关文章

  1. 使用百度网盘+Git,把版本控制托管到云端,附精彩评论

    http://www.cnblogs.com/vajoy/p/3929675.html 我试过多个这种双向同步的网盘,在网络状况不好.系统卡顿以及某些程序BUG的情况下,同步会有错乱现象,尤其是多个电 ...

  2. 使用百度网盘配置私有Git服务

    GitHub上免费的版本只能开源代码库,有时候需要配置些私有的服务,不方便公开.现在免费的网盘的容量越来越大,可以用来做存储的服务,如果只使用网盘存储合并代码很不方便,所以使用网盘+git 配置私有仓 ...

  3. Python编程:从入门到项目实践高清版附PDF百度网盘免费下载|Python入门编程免费领取

    百度网盘:Python编程:从入门到项目实践高清版附PDF免费下载 提取码:oh2g   第一部分 基础知识第1章 起步 21.1 搭建编程环境 21.1.1 Python 2和Python 3 21 ...

  4. 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载

    19af543b068bdb7f27787c2bc69aba7f Additional Download (32-, 64-bit) Package r10 STL debug info androi ...

  5. wget 下载百度网盘文件

    上传文件到服务器,有许多种方法,罗列一下我用过的 xftps之类的工具 rz tz命令 git 上传到码云 通过wget方式,上传文件到百度网盘,七牛云等只要支持wget方式下载即可 下面介绍一下怎么 ...

  6. Mac下百度网盘破解

    Mac版百度网盘破解 先下载正版的百度网盘 打开终端输入命令  cd ~/Downloads && git clone https://github.com/CodeTips/Baid ...

  7. 在Ubuntu18.04.2LTS上使用wine安装qq,微信,迅雷,百度网盘,网易云音乐等软件

    在Ubuntu18.04.2LTS上使用wine安装qq,微信,迅雷,百度网盘,网易云音乐等软件 一.前言 在Linux上办公有一点一直是大家的痛,那就是这些系统上没有我们常用的一些软件,比如QQ,微 ...

  8. Python编程无师自通PDF高清完整版免费下载|百度网盘

    百度网盘:Python编程无师自通PDF高清完整版免费下载 提取码:cx73 内容介绍 畅销Python编程类入门书,美国亚马逊Kindle编程类排行榜榜一. 作者从文科毕业,通过自学编程转行为专业程 ...

  9. Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源,BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 各种后台管理系统

    Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 家庭理财系统 各种后 ...

随机推荐

  1. 如何查看apache,php,mysql的编译参数

    查看nginx编译参数:/usr/local/nginx/sbin/nginx -V 查看apache编译参数:cat /usr/local/apache2/build/config.nice 查看m ...

  2. row_number和partition by分组取top数据

    分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系统中取出每个学科前3名的学生.这种查询在SQL Server 2005之前,写起来很繁琐,需要用到临时表关联查询才能取到.SQL Serve ...

  3. 接微软技术(c#,.net,vb.net, asp.net, sql server, bi, dw etc)项目

    最近闲赋在家,接微软技术的项目,主要有c#,.net,vb.net, asp.net, sql server, bi, dw etc,欢迎推荐.不好意思,借首页发一下.

  4. 深入研究C语言 第三篇

    本篇研究TC2.0下其他几个工具.同时看看TC由源代码到exe程序的过程. 1. 用TCC将下面的程序编为.obj文件 我们知道,TCC在默认的编译连接一个C语言的源程序a.c的时候分为以下两步: ( ...

  5. jQuery .css color 重写 :hover样式没了

    $("#quickSqlDiv a").css({"color":"red"}); $("#course a").css ...

  6. 怎么计算Oracle的表一条记录占用空间的大小

    如何计算Oracle的表一条记录占用空间的大小? 如何计算Oracle的表记录占用空间的大小? 是把所有字段的大小都加起来吗?varchar(256),char,number算几个字节? ------ ...

  7. HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

  8. winfrom调用FastReport模板

    '存放模板的路径 If Dir(Application.StartupPath & "\ReportsFile\HB\01\IN.frx", FileAttribute.N ...

  9. #笔记# 移动前端开发之viewport

    一般移动设备的浏览器都默认设置了一个 viewport ,并初始定义一个虚拟的layout viewport(布局视口),用于解决早期的页面在手机上显示的问题.下面我们来认识几个与 viewport  ...

  10. WinForm/Silverlight多线程编程中如何更新UI控件的值

    单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么 ...