前言

  虽然在工作中, VCS已然配置妥当, 我们敲好的业务只需要Commit&push提交就好, 但是不妨碍我们了解什么是版本控制, 为什么要使用这类工具?

  ps.最近项目里的小伙伴想在自己家中配置Git, 所以我在此写点随笔, 记录一下配置流程, 以供参考.

  在打开IDEA后, 在导航区会有这样一个举足轻重的模块, 没错, 它就是本文的主角VCS:

  打开它:

  会发现这里IDEA可以检查三种不同的VCS工具, 分别是Git, Mercurial, Subversion(即Svn).

什么是VSC(Version Control System, 版本控制系统)?

  版本控制系统(version control system),是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。用的比较多的如svn,git等。[惯例查询度娘]

  工作中更多的注重, VCS的回溯能力以及细节变化, 它能将某个文件/项目回溯到有记录的状态, 以逃避版本变更带来的不可快速解决的问题, 维持正常的线上运转 ; 细节变化, 可以让我们查询最后是谁对哪里做了怎样的修改, 从中找出怪异问题的"罪魁祸首".

有哪些工作中常用的VSC呢?它们都有哪些区别?

  1.本地版本控制, 如RCS, 暂不了解  

  2.CVCS ( 集中化的版本控制系统Centralized Version Control Systems ) , 如Svn, Perforce

  3.DVCS( 分布式版本控制系统Distributed Version Control System ), 如Git, Mercurial

  CVCS都有一个单一的集中管理的服务器( 一台作为服务端的主机 ), 而协作的人们都通过客户端 ( 各自的主机 )连接到这台服务器, 去除最新的文件或者提交更新, 比如Svn 还提供了管理权限; 但是中央服务器的缺陷也是显而易见的, 比如单点故障, 中央服务器宕机, 那么谁也无法继续作业; 更坏的情况, 假如中央服务器的物理硬件发生损坏, 又没有适当适时地备份, 那就GameOver了, 几天的开发进度可能付之东流!

  为了解决这种问题, 于是DVCS问世了, 在这类系统, 像Git, Mercurial中, 客户端并不只是最新版本的文件快照, 而是将整个代码repository 镜像下来, 任何一处协同工作的服务器发生故障, 事后都可以用任何一个镜像来恢复, 每一次的clone 其实就是对repository的完整备份!

Eclipse中搭建Svn的过程

//TODO

IDEA中搭建Git, 连接GitHub的过程

        

  Git工具官网下载地址: https://git-scm.com/downloads , 截止2019年7月27日, 最新版本为 Git 2.22.0

  注意, IDEA支持Git 2.9+ , 最好下载更新的Git

  Git安装中文翻译(并非安装教程, 可根据需要自行选择) 参考链接:https://blog.csdn.net/sishen47k/article/details/80211002

  安装完成后, 右键空白处或需要操作的文件夹后, 显示以下, 则表示安装成功:

          

  接下来配置Git 连接 GitHub: 

1.右键 -- Git Bash Here, 输入以下命令, 设置git全局用户名和邮箱( 可以填入GitHub的 )

  表示用这个账号控制版本, 当然, 你也可以不同仓库使用不同的用户名来管理.

    

2.设置与GitHub的关联, 可用ssh (Secure Shell, 安全外壳协议)

  首先查看C:/用户/本机账号名  目录下是否有 .ssh文件夹, 如果有, 先删除(一般未配置过连接是没有这个文件夹的), 如win10系统下 :

      

  我这里还未关联, 所以不存在.ssh文件, 假若你有, 可以选择删除它, 来重新配置, 在Git命令行输入:

      

ssh-keygen -t rsa -C "your_email@youremail.com"

  一路回车下去, 最终显示: (当然你的肯定是一些乱七八糟的字符,我这个可是充了值的(误)!)

      

  显示成功, 并在刚才的C盘目录下发现创建了.ssh文件夹, 并在文件夹里生成了两个文件, 表示生成ssh成功!如下图:

      

  用编辑器打开 id_rsa.pub 文件, 全选复制内容!!!

3.在网页中打开GitHub账号, 并new一个仓库 repository

  

  然后访问:https://github.com/settings/ssh/new 添加新的SSH 关联

  将方才复制的 id_rsa.pub 内容粘贴进去! 最后重新输入认证密码, 即可在GitHub上保存一份SSH, 你的Git 已经可以关联到GitHub了 (这时你的邮箱会提醒你了, 账号下新增了一个token认证!!!总算告一段落 休息一下,叉会儿腰,再玩儿会手机, 告别这满是英文的"地狱", 开玩笑的, 我们继续 )

4.初始化本地仓库, 选择一个本地文件夹, 作为git的本地仓库, 存储项目镜像(其实如同一份备份)

   

在当前目录内, 右键打开GitBash, 输入:

  会在当前文件夹下创建一个.git文件夹

5. 接着输入: git add .      将该目录下的文件都添加到仓库里, 作为一个主分支( master )

  接着输入: git commit -m "content"    content即为本次提交的注释,最好该注释是有意义的,因为以后跟别人一起用git开发项目时,回退时根据该注释就可以知道提交的时候修改了什么内容。
  

  

  

图文详解 : 什么是版本控制?Eclipse配置SVN和IDEA配置GIT教程的更多相关文章

  1. [图文详解] Sublime Text在Windows/Ubuntu/Mac OSX中配置使用CTags

    很开发者都在找Sublime Text中函数转跳的功能,这个是软件自身没有的功能,要靠CTags这个插件配合CTags的可执行程序的实现的.按照我的理解是CTags扫描索引你的项目文件,然后subli ...

  2. 如何在Eclipse或者Myeclipse中使用tomcat(配置tomcat,发布web项目)?(图文详解)(很实用)

    前期博客 Eclipse里的Java EE视图在哪里?MyEclipse里的Java EE视图在哪里?MyEclipse里的MyEclipse Java Enterprise视图在哪里?(图文详解) ...

  3. 全网最详细的IDEA、Eclipse和MyEclipse之间于Java web项目发布到Tomcat上运行成功的对比事宜【博主强烈推荐】【适合普通的还是Maven方式创建的】(图文详解)

    不多说,直接上干货! IDEA [适合公司业务]全网最详细的IDEA里如何正确新建[普通或者Maven]的Java web项目并发布到Tomcat上运行成功[博主强烈推荐](类似eclipse里同一个 ...

  4. 全网最详细的Eclipse和MyEclipse里对于Java web项目发布到Tomcat上运行成功的对比事宜【博主强烈推荐】【适合普通的还是Maven方式创建的】(图文详解)

    不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 全网最详细的MyEclipse里如何正确新建普通的Java web项目并发 ...

  5. Python安装、配置图文详解(转载)

    Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(I ...

  6. 【和我一起学python吧】Python安装、配置图文详解

     Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境( ...

  7. 【适合公司业务】全网最详细的IDEA里如何正确新建【普通或者Maven】的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【多个子项目】并存)(图文详解)

    不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在Myeclipse里,则是File -> new -> ...

  8. Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)

    这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...

  9. CentOS 6.3下Samba服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下   一.简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...

随机推荐

  1. 【2-sat】8.14B. 黑心老板

    2-sat 只写过板子 题目大意 有一个长度为$k$取值只有01的序列,现在$n$个人每人下注三个位置,请构造一个序列使每个人最多猜对一个位置 $k\le 5000,n \le 10000$ 题目分析 ...

  2. js 获取json对象的 键 和 值

    直接上图 结果:

  3. cookie和Session是啥?

    HTTP是无状态(stateless)协议 http协议是无状态协议即不保存状态. 无状态协议的优点: 由于不需要保存记录,所以减少服务器的CPU和内存的资源的消耗.毕竟客户端一多起来保存记录的话对于 ...

  4. Bootstrap Popover(弹出框)弹出自定义格式代码

    HEAD 标签之间引入CSS:<link href="../../../public/css/bootstrap.min.css" rel="stylesheet& ...

  5. 面试必会之ArrayList源码分析&手写ArrayList

    简介 ArrayList是我们开发中非常常用的数据存储容器之一,其底层是数组实现的,我们可以在集合中存储任意类型的数据,ArrayList是线程不安全的,非常适合用于对元素进行查找,效率非常高. 线程 ...

  6. ARM编辑、编译工具

    手动编译 编译器问题,肯定是GNU的大名鼎鼎的GCC了,与此相关的什么连接器,汇编器也都包含在内了. 针对arm的GCC,当然就是arm-linux-gcc了,我所用的版本就是友善之臂光盘自带arm- ...

  7. UVAlive 7414 Squeeze the Cylinders a,b,c三种步数 搜索+最短路

    题意:给你n个点(n<=50),然后有些点之间会有一条路,路是单向的,每个回合让你走a,b,c三种步数中的任意一种(a,b,c<=100),问你最少需要多少个回合才能保证一定能从1点到达n ...

  8. Depth from Videos in the Wild 解读

    2019年7月17日11:37:05 论文 Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unkn ...

  9. 腾讯域名防封 微信/QQ域名检测,域名防封的原理

    微信屏蔽网页的依据是什么?明面上的原因是网页内容有诱导.诈骗等不和谐的内容时候,被用户举报就会封闭.实际上这只是表面现象,因为我们能明确的感受到不同的阶段,同样的内容,被封杀的频率差别很大的,也就是说 ...

  10. Qt事件机制浅析

    Qt事件机制 Qt程序是事件驱动的, 程序的每个动作都是由幕后某个事件所触发.. Qt事件的发生和处理成为程序运行的主线,存在于程序整个生命周期. Qt事件的类型很多, 常见的qt的事件如下: 键盘事 ...