2021-02-17 使用git和gitee实现云存储、多终端同步、版本和分支管理

之前一直使用微软的OneDrive作为云存储工具,但OneDrive的连接最近越发不稳定了,经常出现需要急用时连接不上的情况。国内的云存储大多是提供一个云盘,需要将文件下载到本地后使用,不像OneDrive能在后台保持本地与云端的同步,且国内的云盘免费使用的限制很多,带宽可怜。
我之所以偏好OneDrive,是因为它类似一个版本控制工具,能同步多个终端与云端的数据。而git可以算得上版本控制和多端协同的鼻祖了,其协同能力远超OneDrive一个数量级,国内的gitee码云是一个支持git同步的云盘,且能免费使用,何乐而不为。

1. git能提供什么

  • 提供本地目录与云端目录的同步,实现多终端协同
  • 提供版本管理、分支、合并,实现多人协同
  • 主要用于软件项目的多人协同和版本控制
  • 也可用于文档(word、odt、ppt、odp等)协作

2. 使用git的基本步骤和指令

1)在支持git协议的云端注册帐号、新建云端仓库
码云是国内支持git协议的云盘:https://gitee.com/,注册一个帐号,并创建一个私有仓库。
仓库创建后,可以打开该仓库,获取其HTTPS克隆地址。

2)在本地新建目录,并初始化为git目录

  • $ git init
    这一步实际是在本地目录中创建了一个隐藏文件夹.git,该文件夹中保存了与云端的连接信息、版本信息等

3)配置与云端的连接信息

  • $ git remote add <别名> <刚才获取的HTTPS克隆地址>
    以后可以通过这个别名指代云端仓库的地址。
    也可以通过git remote命令查看当前已配置的别名列表。

4)从云端仓库拉取文件

  • $ git pull <别名> master
    别名就是上一步添加的别名,master是一个默认分支,这个是在云端创建仓库时默认指定的,所以也可以修改名字,且还可以创建新的分支,这在后文介绍。
    若出现”拒绝合并无关历史“的错误提示,可使用git pull --allow-unrelated-histories进行拉取。

5)向云端推送文件

  • $ git add <文件名/目录名>
    添加对本地文件的跟踪,可以用通配符;
  • $ git commit -m '1.0.0:说明信息'
    此处需要添加-m参数,用于提供说明信息,若没有-m参数,则默认会打开vi编辑器,在编辑器中可输入多行具有html格式的说明信息;
  • $ git push <别名> <分支>
    我们可以通过git push --set-upstream <别名> <分支>来设定推送到的仓库和分支,以后直接使用git push就可以进行推送;
  • $ git config credential.helper store
    在push时,会要求输入用户名和密码,为了避免每次操作都需要进行认证,可配置git记录下首次输入的认证信息。

6)删除云端文件/目录

  • $ git pull
    首先将云端内容同步到本地;
  • $ git add <文件名/目录名>
    添加对欲删除文件/目录的跟踪;
  • 在本地删除文件或目录;
  • $ git commit -m 'xxx'
    提交更新
  • $ git push
    将更新推送到云端

7)分支的使用

  • $ git branch <分支名>
    创建分支
  • $ git checkout <分支名>
    检出到分支(设定指定分支为活动分支)
  • $ git merge <分支名>
    合并指定分支的内容到当前分支;
    若指定分支为当前分支的直接后继,则以Fast-Forward方式直接拨指针更新当前分支;
    若指定分支不是当前分支的直接后继,则进行合并提交,若两个分支不存在冲突,则合并成功,若存在冲突,则冲突文件会出现特殊标识区段,需手工修改这些区段后,通过git add <文件名>来标记冲突已解决。
  • $ git branch -a
    查看所有分支,*号开头的是当前分支,remotes/开头的是云端分支
  • $ git branch -d <本地分支名>
    删除本地已合并的分支,若想强制删除未合并分支,可用-D
  • $ git push origin --delete <云端分支名>
    删除云端分支

3. git的分支管理:GitFlow

git的分支可以任意定义,但以GitFlow的方式可定义符合软件工程规范的分支。GitFlow是由Vincent Driessen提出的一个git操作流程标准,包含如下几个关键分支:

master

  • 主分支 , 产品的功能全部实现后 , 最终在master分支对外发布
  • 该分支为只读唯一分支 , 只能从其他分支(release/hotfix)合并 , 不能在此分支修改
  • 另外所有在master分支的推送应该打标签做记录,方便追溯
  • 例如release合并到master , 或hotfix合并到master

develop

  • 主开发分支 , 基于master分支克隆
  • 包含所有要发布到下一个release的代码
  • 该分支为只读唯一分支 , 只能从其他分支合并
  • feature功能分支完成 , 合并到develop(不推送)
  • develop拉取release分支 , 提测
  • release/hotfix 分支上线完毕 , 合并到develop并推送

feature

  • 功能开发分支 , 基于develop分支克隆 , 主要用于新需求新功能的开发
  • 功能开发完毕后合到develop分支(未正式上线之前不推送到远程中央仓库!!!)
  • feature分支可同时存在多个 , 用于团队中多个功能同时开发 , 属于临时分支 , 功能完成后可选删除

release

  • 测试分支 , 基于feature分支合并到develop之后 , 从develop分支克隆
  • 主要用于提交给测试人员进行功能测试 , 测试过程中发现的BUG在本分支进行修复 , 修复完成上线后合并到develop/master分支并推送(完成功能) , 打Tag
  • 属于临时分支 , 功能上线后可选删除

hotfix

  • 补丁分支 , 基于master分支克隆 , 主要用于对线上的版本进行BUG修复
  • 修复完毕后合并到develop/master分支并推送 , 打Tag
  • 属于临时分支 , 补丁修复上线后可选删除
  • 所有hotfix分支的修改会进入到下一个release
git.png

GitFlow 的优势有如下几点:

  • 并行开发:GitFlow可以很方便的实现并行开发。每个新功能都会建立一个新的feature分支,从而和已经完成的功能隔离开来,而且只有在新功能完成开发的情况下,其对应的feature分支才会合并到主开发分支上。另外,如果你正在开发某个功能,同时又有一个新的功能需要开发,你只需要提交当前feature的代码,然后创建另外一个feature分支并完成新功能开发。然后再切回之前的 feature 分支即可继续完成之前功能的开发。
  • 协作开发:GitFlow 还支持多人协同开发,因为每个feature分支上改动的代码都只是为了让某个新的feature可以独立运行。同时我们也很容易知道每个人都在干啥。
  • 发布阶段:当一个新feature开发完成的时候,它会被合并到develop分支,这个分支主要用来暂时保存那些还没有发布的内容,所以如果需要再开发新feature,我们只需要从develop分支创建新分支,即可包含所有已经完成的feature 。
  • 支持紧急修复:GitFlow还包含了hotfix分支。这种类型的分支是从某个已经发布的tag上创建出来并做一个紧急的修复,而且这个紧急修复只影响这个已经发布的tag,而不会影响到你正在开发的新feature。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容