上一篇文章其实写到一半, 因为很多操作没法在我刚创建的代码仓库上进行演示, 我得弄一堆分支或者commit. 这篇先把上一篇没有讲解的操作补全.


2020-12-12

VS2019 16.8更新了团队资源管理器, 如果你用的VS的团队资源管理器没有以下的Git功能界面, 请参考这篇文章 VS2019 16.8 “消失“的团队资源管理器


准备

本来这篇想以opencv的仓库为例子来进行演示, 但是我Clone了一下发现速度只有几十k. 所以还是想解决下这个Github的Clone速度问题.

如果在取消Clone以后VS是这样一直在取消中:

那么就去任务管理器中把所有的Git for windows给结束掉:

结束后会有以下的提示:

这个没什么问题, 感觉是VS陷入了死锁了. 任何和Git相关的操作导致VS一直在读条的, 都可以通过这个方式去中断Git操作.

Github加速插件

我用的是这个插件:

在Chrome的网上应用中搜索Github加速就行. 如果不是Chrome的话, 就在这个网址去搜索对应的代码仓库:https://github.com.cnpmjs.org/search?q=opencv

安装好了以后, Github的页面会增加一个接口:

这种属于镜像Clone. 概念就是国内访问Github的服务器AWS云很慢, 它就定期从Github的服务器上把数据下载到一个国内访问速度较快的服务器. 优点肯定是速度很快, 但是缺点也有, 这里Clone下来的仓库和Github之间会有时间差. 比如你Clone好了以后, 有人在Github上提交了一个bug修复, 你在当前的镜像地址是没法及时获取到这次提交的. 解决的方法也有, 下面我们先把Opencv的仓库Clone下来, 再来讲怎么解决这个问题.

这个镜像下载的速度真的是非常快了, 大概有几M每秒的速度:

回到上面的问题, 怎么把仓库改回GitHub上? 在Clone好了以后我们把仓库的地址还原为Github的地址, 并且同步一下:

把下面这两个地址改为Github的Clone地址:

这个才是官方地址:

改好以后, 记得同步一次:

出现红框的内容就表示同步成功了, 这时候你这个镜像仓库就回到了Github的主线上. 注意这里是和Github在同步,所以网速也会很慢, 但是由于数据量少很多, 所以还能接受.

下面检查下是否同步完成:

Git操作示范

查看Commit历史

如上图所示, 在分支下可以右键某个分支点击查看历史纪录:

仔细看下历史记录界面:

由于opencv分支实在太少, 看不出分支号标签的好处.如果像我们公司一样有很多分支在同时开发, 最终合并到主版本上. 在这里就可以很清晰的看出哪里是从哪个分支提交过来的代码.

查看某个文件的提交历史

首先要在解决方案资源管理器下:

右键选中某个文件或者文件夹:

点击查看历史记录后就会显示当前文件或文件夹相关的提交:

这个筛选功能非常实用.

切换到某个Tag上

Tag标签是开发者发版用的. 当这个版本需要Release给公众使用的时候, 我们会打上一个标签用来记录当前的Commit Id. 这是为了在这次发版后可以根据客户反馈的bug信息而找到对应的代码来debug.

目前Opencv发布的最新版本是4.3.0, 那我们就切换到这个版本.

在Tag内切换

在标记下找到对应的Tag 4.3.0:

右键这个tag:

签出一般用于分支, 我感觉不大适合tag. 我这里签出也报错了, 感觉还是4.3.0只是tag 并没有分支,所以VS执行签出的时候出现空指针错误.

一般的使用新建本地分支位置:

这里的签出分支是可以的, 因为是VS先根据4.3.0的tag创建一个分支4.3.1, 然后签出这个分支. 如果没有勾选这个, 那创建分支后你依然停留在原来的分支上, 需要自己在分支界面手动切换过去.

在历史记录内切换

下面是操作示范:

首先搜索4.3.0以后出现的一个commit右边有个绿色的符号4.3.0, 这个绿色标记就是Tag的标志. 说明这个commit对应的就是4.3.0的这个版本. 找到这个commit后有两种方式切换过去, 一种像上面一样用重置:

这两个选项很好理解, 就是你当前的修改代码要不要保留. 当重置以后, 在你当前的分支上把代码重置到这个commit. 这种方式不大推荐使用, 因为没法从一个分支的中间开发, 你的提交内容很可能和后面没有更新的提交冲突. 你可以看看当前分支的历史记录,有多少没有更新到本地的提交:

这里表示你当前没有更新的commit:

你在这个状态下提交的东西都有可能和上面的commit冲突. 这种方式适合把代码切过来编译对应版本的SDK, 不做任何开发操作.

还有一种是在这个commit的基础上创建新的分支, 这种方式比较推荐:

这种方式最适合你在这个Tag上进行bug修复, 然后发布新的修复子版本. 比如 4.3.1.

挑选Commit到当前分支

这个操作又叫cherry-pick. 顺着上面的情景, Opencv4.3.0发版了, 客户报了一个bug, 恰好这个bug在发版后修复了. 版本在外, 有大量客户在使用, 我们只会发布小的更新版本来修复某些问题, 而不是把4.3.0更新到master最新commit. 所以这个需求就是我当前的分支只需要其他分支的一些commit内容, 并不需要把两个分支给合并.

假设我们当前的分支是my_4.3.0, 同时在master分支上找到了一个我们需要的commit:

找到这个commit后, 右键它选择挑拣:

出现这个就是挑拣完成了, 也有可能会出现冲突:

假设没有冲突的情况, 你可以在同步里看到这次commit:

如果出现冲突了, 我这里也不好示范, 大概就是两边同时修改的代码怎么保留的问题.

这时候你可以编译当前的版本进行测试, 确认修复客户的bug以后, 可以发布新的4.3.1版本.

注意这个挑拣操作可以是任意分支的commit, 但是最好是同一分支的, 这样冲突的可能性就会更小. 挑拣的对象也可以是多个commit.

补充

其实还有个比较重要的操作没示范, 也就是PR(pull request), 但是不知道什么原因这个界面在我这里一直是这样的:

所以我一直也就直接在GitHub上进行拉取请求.

在VS右下角的位置还有团队资源管理器的几个快捷键:

上面的这些标记的地方都可以按键点击跳转到团队资源管理器的某个界面, 大家可以自己摸索下.

由于Github在VS下打开经常会是这样的:

所以下一篇我打算介绍下怎么使用微软的Azure来进行代码管理.

至于为啥Github这么难访问呢? 都是因为一群垃圾非要在技术网站上搞政治主张,  呸! 世上本来没有墙, 垃圾多了, 自然需要用墙隔离开.

VS2019 团队资源管理器--Git的使用(二)相关推荐

  1. 【转】Visual Studio团队资源管理器 Git 源码管理工具简单入门

    1.1 环境 Visual Studio + GitLab (其他版本同理) 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(Fetch+Me ...

  2. visual studio2019团队资源管理器的使用

    使用 visual studio2019 团队资源管理器托管代码 仓库初始化 使用 git init 命令对仓库进行初始化 不懂请看 Git本地代码上传到远程仓库 添加代码仓库(已有仓库) 打开 VS ...

  3. VS的TFS(团队资源管理器)

    Team Foundation Server(TFS)是微软的团队资源管理器,与VS可以完美契合. TFS有收费版和免费版,对于5人左右的小团队,免费版本足以. TFS是以SQLServer作为支撑的 ...

  4. tfs连不上团队资源管理器问题

    这个问题主要原因是因电脑装了vs2008又装了vs2012,因为版本不一样,所以只需要将VersionControl.config这个文件删除掉就可以了.文件路径C:\Users\Administra ...

  5. MyeclipseTFS团队资源管理器插件

    Myeclipse2014版本下方法如下:(其他自测) 1.Help -->  Install from Site connectivity 2.name:TFS  Location:http: ...

  6. 在Visual Studio 2019(VS2019)中使用GIT进行代码控制

    1. 打开团队资源管理器Team Explorer 打开Visual Studio并转到菜单Team Explorer => Manage Connections => Manage Co ...

  7. 【已解决】Tortoise Git在Windows文件资源管理器中图标显示异常问题

    文章目录 1. 按 2. 解决方案 3. 原理说明 1. 按 我们在安装了OneDrive.坚果云.NextCloud 等网盘同步或者其他软件后会发现Tortoise Git的图标显示异常,不能正常加 ...

  8. Hadoop(二): YARN(资源管理器 RM)、HBase高可用集群搭建

    目录 一.Hadoop的高可用原理概述 1.1 原理概述 1.2 实验环境要求 二.高可用集群的搭建 2.1 搭建Zookeeper 2.2 搭建HA的高可用 2.3 YARN(资源管理器 RM)高可 ...

  9. Hadoop技术(二)资源管理器YARN和分布式计算框架MapReduce

    资源管理器YARN和分布式计算框架MapReduce 第一章 Hadoop MapReduce 是什么 一 MapReduce 介绍 1. 基本介绍 2. MR数据流程方向 3. MR 原语/ 核心思 ...

  10. Oracle资源管理器(二)-- 创建和使用数据库资源计划

    (参考 http://blog.csdn.net/mrluoe/article/details/7969436 -- 整理并实践通过) 第1步,创建3个用户 SQL> create user s ...

最新文章

  1. 机器人学习--栅格地图(occupancy grid map)构建
  2. 树莓派kail linux安装wine,在ubuntu14.04中安装wine
  3. python--装饰器、生成器、迭代器、元类
  4. 数组名与函数的结合使用注意项
  5. 基于jquery.ajax的进一步封装
  6. 【2017年第2期】应用驱动的大数据融合平台建设
  7. Lua 正确的尾调用(proper tail call)
  8. WeixinJSBridge API使用实例
  9. 自动生成java代码_自动生成代码
  10. Gradle入门教程学习笔记
  11. U盘被写保护无法格式化(我用win10,同样成功格式化了U盘)
  12. 线下综合体-中岛店的一些思考
  13. 优化 WindowsXPSP2 系统服务项设置
  14. “狗屁不通文章生成器”项目登顶GitHub热榜~
  15. 根据身份证号(18/15)计算年龄、出生日期、性别
  16. 成都农商银行软件测试面试题,农商行历年笔试真题找不到?不慌!16家农商行笔试题库等你来刷!...
  17. 21-4-21 USB接口
  18. SQLserver数据库教程
  19. 第二章 ObjectARX类库简介
  20. CSDN 的各位新博主们,交个朋友吧~

热门文章

  1. 云服务器超级鸟,超级鸟的自述_A3_新浪游戏_新浪网
  2. Python —— 第一部分 序列
  3. 【读书笔记】计算广告(第3部分)
  4. 特斯拉是如何训练自动驾驶的?
  5. Windows7系统提示当前页面的脚本发生错误怎么办
  6. PC-红警联机问题与下载
  7. 工作了17年,2021年双11是我见过有史以来“撸腾讯云羊毛”最狠的一次,血赚
  8. Windows 下使用PDH 获取CPU 使用率
  9. 爬虫案例——模拟登录QQ空间
  10. 橙色军团的“3E”宣言