图文详解 : 什么是版本控制?Eclipse配置SVN和IDEA配置GIT教程
前言
虽然在工作中, 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教程的更多相关文章
- [图文详解] Sublime Text在Windows/Ubuntu/Mac OSX中配置使用CTags
很开发者都在找Sublime Text中函数转跳的功能,这个是软件自身没有的功能,要靠CTags这个插件配合CTags的可执行程序的实现的.按照我的理解是CTags扫描索引你的项目文件,然后subli ...
- 如何在Eclipse或者Myeclipse中使用tomcat(配置tomcat,发布web项目)?(图文详解)(很实用)
前期博客 Eclipse里的Java EE视图在哪里?MyEclipse里的Java EE视图在哪里?MyEclipse里的MyEclipse Java Enterprise视图在哪里?(图文详解) ...
- 全网最详细的IDEA、Eclipse和MyEclipse之间于Java web项目发布到Tomcat上运行成功的对比事宜【博主强烈推荐】【适合普通的还是Maven方式创建的】(图文详解)
不多说,直接上干货! IDEA [适合公司业务]全网最详细的IDEA里如何正确新建[普通或者Maven]的Java web项目并发布到Tomcat上运行成功[博主强烈推荐](类似eclipse里同一个 ...
- 全网最详细的Eclipse和MyEclipse里对于Java web项目发布到Tomcat上运行成功的对比事宜【博主强烈推荐】【适合普通的还是Maven方式创建的】(图文详解)
不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 全网最详细的MyEclipse里如何正确新建普通的Java web项目并发 ...
- Python安装、配置图文详解(转载)
Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(I ...
- 【和我一起学python吧】Python安装、配置图文详解
Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境( ...
- 【适合公司业务】全网最详细的IDEA里如何正确新建【普通或者Maven】的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【多个子项目】并存)(图文详解)
不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在Myeclipse里,则是File -> new -> ...
- Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)
这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...
- CentOS 6.3下Samba服务器的安装与配置方法(图文详解)
这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下 一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...
随机推荐
- HDU 6048 - Puzzle | 2017 Multi-University Training Contest 2
/* HDU 6048 - Puzzle [ 思维,结论 ] | 2017 Multi-University Training Contest 2 题意: 类似华容道的问题, N*M 的矩阵中N*M- ...
- PHP mysqli_fetch_array() 函数
从结果集中取得一行作为数字数组或关联数组: <?php // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli_connect("local ...
- ZurmoCRM 可执行代码高危风险报告及修复
鉴于目前ZumroCRM已经云端化,其开源版本的代码基本没有人维护,也没有地方提交bug清单.但相信国内有一些用户在使用这个开源的版本,下面报告一个ZumoCRM的重大风险点. 风险描述: 当用户登录 ...
- List,Set,Map在java.util包下都是接口 List有两个实现类:ArrayList和LinkedList Set有两个实现类:HashSet和LinkedHashSet AbstractSet实现了Set
List,Set,Map在java.util包下都是接口 List有两个实现类:ArrayList和LinkedListSet有两个实现类:HashSet和LinkedHashSetAbstractS ...
- 集合家族——LinkedList
一.概述: LinkedList 与 ArrayList 一样实现 List 接口,只是 ArrayList 是 List 接口的大小可变数组的实现,LinkedList 是 List 接口链表的实现 ...
- 利用Python构建时间序列模型解决实际问题的正确姿势
要本着应用到实际工作中目的去学时间序列分析,才能深入浅出的学会,不要纠结于理论,只听我的,我有信心说明白. 本章内容 趋势分析 序列分解 序列预测 序列分解 统计学基础铺垫 划分 时间序列按照季节性划 ...
- Codeforces 1106E. Lunar New Year and Red Envelopes(DP)
E. Lunar New Year and Red Envelopes 题意: 在长度为n的时间轴上,有k个红包,每个红包有领取时间段[s,t],价值w,以及领了个这个红包之后,在时间d到来之前无法再 ...
- @Value和@PropertySource实现*.properties配置文件读取过程和实现原理
@Value和@PropertySource实现*.properties 配置文件读取过程和实现原理 1 配置使用步骤 (1)右击resource目录添加*.prooerties配置文件
- js 中null,undefined区别
首先摘自阮一峰先生的文章: 大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil. 有点奇 ...
- pdnovel 看书 读书 听书
pdnovel剖度小说是discuz的阅读插件,这里分享一下阅读的一些技巧. 看书 点击或手机输入 http://txt.xlongwei.com 即可进入阅读首页,内容分书book.卷volume. ...