精华内容
下载资源
问答
  • 版本控制

    千次阅读 2019-09-26 15:57:15
    什么是版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 除了项目源代码,你可以对任何类型的文件进行版本控制版本控制的作用 有了它你就可以将某个文件回溯到之前的...

    什么是版本控制

    版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 除了项目源代码,你可以对任何类型的文件进行版本控制。

    版本控制的作用

    有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。

    版本控制系统分类

    本地版本控制系统

    许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 这么做唯一的好处就是简单,但是特别容易犯错。 有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖文件。

    为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。下图来源于Git官网。

    本地版本控制系统

    集中式版本控制系统

    接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作? 于是,集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生。

    集中化的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。下图来源于Git官网。

    集中式版本控制系统

    这么做虽然解决了本地版本控制系统无法让在不同系统上的开发者协同工作的诟病,但也还是存在下面的问题:

    单点故障:中央服务器宕机,则其他人无法使用;如果中心数据库磁盘损坏没有进行备份,你将丢失所有数据。本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

    必须联网才能工作:受网络状况、带宽影响。

    分布式版本控制系统

    于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 Git 就是一个典型的分布式版本控制系统。

    这类系统,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。下图来源于Git官网。

    分布式版本控制系统

    分布式版本控制系统可以不用联网就可以工作,因为每个人的电脑上都是完整的版本库,当你修改了某个文件后,你只需要将自己的修改推送给别人就可以了。但是,在实际使用分布式版本控制系统的时候,很少会直接进行推送修改,而是使用一台充当“中央服务器”的东西。这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

    分布式版本控制系统的优势不单是不必联网这么简单,后面我们还会看到 Git 极其强大的分支管理等功能。

    展开全文
  • 学习时,接触到了Git这个版本控制软件,经常用到它来管理代码。以下介绍IDEA如何连接gitee。 Gitee实战使用教程目录一、 Gitee相关介绍1.1 码云Gitee的介绍1.2 码云Gitee的模式1.3 码云Gitee的优势二、 IDEA操作...

    学习时,接触到了Git这个版本控制软件,经常用到它来管理代码。以下介绍IDEA如何操作码云gitee,通过IDEA把项目推送到码云、克隆仓库等操作方法。

    文章在后续进行了补充,在完善文章的时候,发现最初写这篇文章时用来演示的文件,已经有部分修改了(这个文件夹不是另建来演示的,平时也存放项目),所以有一些文件发生了变化(比如 _ 变成了 - )。

    以下演示是idea操作gitee的方法,idea操作Github的方法与Gitee相似,也可以参考这篇文章:IDEA连接Github之Git版本控制教程

    对于码云的使用,学习可以参考这篇文章:不会码云Gitee怎样实战使用?看完它你就知道了,如果只是想快速地大概了解一下码云,可以参考这篇文章:Gitee使用之快速入门教程

    一、 Gitee相关介绍

    简介:介绍Gitee的相关信息。

    1.1 码云Gitee的介绍

    码云是现在国内最大的代码托管平台,功能与GitHub相似,是一个分布式版本控制系统,提供基于git的代码托管服务,是一个为开发者提供稳定、高效、安全的云端软件开发协作的平台。

    1.2 码云Gitee的模式

    一个开源项目,开源分为两个群体:核心开发团队、贡献者。

    • 核心开发团队,拥有对代码修改的最终决定权。
    • 贡献者,能查看源代码但不能对版本库提交修改。

    1.3 码云Gitee的优势

    使用分布式版本控制系统(如Git):

    1. 可以在本地克隆一个完整的版本库。

    2. 开发者不需要一直保持连接共享版本库的状态,几乎全部操作都(脱离网络)能在本地版本库中完成。

    3. 不单单是核心开发团队可以克隆一份本地版本库,贡献者(非项目成员)也可以从共享版本库中克隆一份本地版本库,但是 只有 核心开发团队可以将最近的本地版本库推送到共享版本库上。

    4. 贡献者(非项目成员)如果想提交自己对项目的修改,用 git format-patch 命令将本地仓库提交转换为补丁文件或补丁文件序列,再通过 邮件 发送给核心开发团队。或者搭建一个自己的 共享版本库 ,通过 邮件 创建一个拉拽请求(Pull Request),让核心开发团队成员到自己的版本库来抓取(Pull)。

    如果想了解更多码云的相关信息,可以查看这篇文章: 不了解码云Gitee?看完这教程你就知道了

    二、 在IDEA推送项目到Git(如果是上传已经打开的项目,可以忽略第二部分)

    简介:这一部分,可以理解为克隆远程仓库,修改后再提交。

    2.1 在IDEA导入项目

    现在一般主流的集成开发工具都支持git,idea也集成了git的客户端。

    打开 idea ,点击 Check out from Version Control ,如下图所示
    在这里插入图片描述
    选择 Git
    在这里插入图片描述

    点击后会弹出以下窗口,把gitee的 远程仓库地址 复制下来,填上
    项目存放的路径(本地的路径),填完后点击 Test 测试一下,如图所示

    码云的使用操作,可以参考这篇文章:Gitee使用操作之快速入门教程
    在这里插入图片描述

    接着点击 Yes

    在这里插入图片描述
    idea不能识别代码的类型,选择从现有代码导入项目,点击 Next
    在这里插入图片描述
    这里会自动补充完成(根据上面的创建),会自动填上 项目名项目地址 的,可以直接点击 Next
    在这里插入图片描述
    这里可以直接点击 Next

    在这里插入图片描述
    接着,点击 Finish 完成
    在这里插入图片描述

    2.2 在IDEA推送项目

    上面根据 2.1 的导入完成后,打开idea如下图所示,我们把 Git school.iml (根据自己的名字,上面操作起的名字不同,生成的配置文件的文件名也不同) 提交到远程仓库。

    在这里插入图片描述

    右键 文件名 ,点击 Git --> Add

    在这里插入图片描述

    点击后,文件名会变颜色,如下图
    在这里插入图片描述
    接着在右键点击 文件名 ,点击 Git --> Commit File… (如果右键的是文件夹,则显示这个 Commit Directory …

    在这里插入图片描述
    点击后如下,会显示上面选择的 提交的文件 ,填上本次 提交的描述 (推荐填写,免得后续不知道以前提交的原因) ,点击 Commit
    在这里插入图片描述
    点击后,如果成功,左下角会弹出一下提示(如果不成功,根据错误提示查找报错原因)

    在这里插入图片描述
    点击左下角的 Version Control ,可以查看Git的版本管理信息,点击 Local Changes ,查看本地修改了的文件
    在这里插入图片描述
    点击 Log ,查看git的提交日志

    在这里插入图片描述

    三、 IDEA使用Git前的准备

    简介:介绍上传项目前的准备。

    3.1 在IDEA配置Git环境

    Git可以去官网下载,也可以从这里下载:Git下载地址(已把Git放进Cmder文件中,不用再另外下载),这里的资源是免费下载的,如果显示需要C币,私信作者调整就可以了。

    打开 idea 的设置面板 File --> Settings(快捷键: Ctrl+Alt+S

    在这里插入图片描述

    点击 Version Control --> Git ,修改git可执行文件的路径(如果下载Git的时候是默认安装的路径,这里好像会自动关联),找到git安装目录下的 git.exe 文件

    在这里插入图片描述
    点击 Test 测试一下,检查配置是否成功,配置成功的话会提示版本号的

    在这里插入图片描述

    3.2 创建Git本地仓库

    创建这个项目的git本地仓库,点击 VCS --> Import into Version Control --> Create Git Repository

    在这里插入图片描述

    选择目录路径(根据自己的选择),点击 OK
    在这里插入图片描述
    打开项目的目录,会发现生成了一个 .git 文件夹,git本地仓库创建完成。
    在这里插入图片描述

    四、 在IDEA推送项目到Git

    4.1 将文件添加到暂存区

    右键项目名,点击 Git --> Add

    在这里插入图片描述
    也可以在idea的导航栏选择,点击 VCS --> Git --> Add

    在这里插入图片描述

    4.2 从暂存区提交到本地仓库

    提交的方法有几个,选择一个进行操作就可以了。

    4.2.1 提交方法一

    直接点击上方导航栏的 就可以了
    在这里插入图片描述

    4.2.2 提交方法二

    右键需要提交的项目名,点击 Git --> Commit File (如果选择的是单个文件,显示的是 Commit File ,如果选择的是文件夹,显示的是 Commit Directory
    在这里插入图片描述

    4.2.3 提交方法三

    点击 VCS --> Commit (或者按快捷键 Ctrl + k
    在这里插入图片描述

    4.2.4 提交方法四

    点击上方导航栏的 VCS --> Git --> Commit Directory
    在这里插入图片描述

    提交到本地仓库的时候,会弹出提示让你检查确认,添加提交的描述(完善下文章,所以和最初写这篇文章的时候,项目、描述等有些变化),根据自己的情况修改,如下图所示

    在这里插入图片描述

    4.3 将本地仓库推送到远程仓库

    4.3.1 推送操作方法一

    右键 项目名 ,点击 Git --> Repository --> push (或者按快捷键:Ctrl + Shift +K

    在这里插入图片描述

    4.3.2 推送操作方法二

    点击上方导航栏的 VCS --> Git --> Push
    在这里插入图片描述
    会弹出窗口显示推送的项目(如果没有填过 账号密码 ,也就是说首次提交,是需要填写git的账号信息的)

    在这里插入图片描述

    提交完成,可以登录git,去远程仓库检查一下。

    五、 在IDEA从远程仓库克隆工程到本地仓库

    点击 VCS --> Git --> Clone

    在这里插入图片描述
    点击后会弹出窗口,如下图所示,填写相关信息

    在这里插入图片描述
    克隆完成后,可以打开本地存放路径(根据自己情况,也就是上面选择的路径),查看克隆下来的仓库。

    六、 在IDEA从远程仓库拉取代码

    点击上方导航栏 VCS --> Git --> Pull

    在这里插入图片描述

    点击后会弹出一下窗口,(根据自己情况)选择需要拉取的代码
    在这里插入图片描述

    七、 在IDEA创建分支

    点击 VCS --> Git --> Branches (或者按快捷键: Ctrl+Shift+`

    在这里插入图片描述
    弹出以下窗口,点击 New Branch

    在这里插入图片描述

    再填写 分支名 (这里勾选的话,创建完成就切换到这个新建的分支)
    在这里插入图片描述

    八、 在IDEA切换分支

    点击 VCS --> Git --> Branches (或者按快捷键: Ctrl+Shift+`

    在这里插入图片描述
    选择需要切换到的分支,点击 Checkout 就可以了

    操作完成。

    好了,继续学习。

    展开全文
  • Git版本控制(完美整理版)

    万次阅读 多人点赞 2018-09-03 21:03:19
    版本控制Git 一.Git是什么 版本控制工具!Git是目前世界上最先进的分布式版本控制系统(没有之一)。 这个软件用起来就应该像这个样子,能记录每次文件的改动 这样,你就结束了手动管理多个...

    一.Git是什么

    一言以蔽之:版本控制工具。Git是目前世界上最先进的分布式版本控制系统(没有之一)。

    这个软件用起来就应该像这个样子,能记录每次文件的改动

    这里写图片描述

    这样,你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪。

    二.Git发展史

    cvs --svn

    在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!你也许会想,为什么Linus不把Linux代码放到版本控制系系统呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对 CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和 Linux的开源精神不符。

    Linus花了两周时间用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!Git迅速成为最流⾏的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移到GitHub,包括jQuery,PHP,Ruby等等。

    三.Git运行方式

    1.集中式VS分布式

    Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制

    (1)集中式版本控制系统,

    版本库是集中存放在中央服务器的,你干活的时候,用的都是自己的电脑,所以要先从 中央服务器取得最新的版本,然后开始干
    活,干完活了,再把自己的活推送给中央服 务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后
    回到家自己改,改完了,再放回图书馆。集中式版本控制系统最大的弊端就是必须联网才能工作,如果在局域网内还好,速度够快,可如果在互联网上,遇到网速慢的话,可 能提交个10M的文件就需要5分钟,这还不得把人给憋死啊。

    (2)分布式版本控制系统

    根本没有“中央服务器”,每个⼈的电脑上都是一个完整的版本库,这 样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个认电脑上都有个完整的版 本库,那多个人如何协作呢?比如说你在自己电脑上改了文件A,你的同事也在他的 电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到 对方的修改了。和集中式版本控制系统相比,分布式版本控制系统的安全性要好很多,因为每个电脑里都有完整的版本库,某个人的电脑坏掉了不要紧,而集中式版本控制 系统的中央服务器要是出了问题,所有人都没法干活了

    git运行方式如图

    这里写图片描述

    2.工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念

    工作区(Working Directory):就是你在电脑⾥能看到的目录,

    版本库(Repository):工作区有个隐藏目录“.git”,这个不算工作区,而是Git的版本
    库,Git的版本库存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还
    有Git为我们主动创建的第一个分支master,以及指向master的一个指针叫HEAD。

    我们把文件往Git版本库中添加的时候,是分两步执行的:

    第一步是用“git add”把文件添加进去,实际上就是把文件修改添加到暂存区;
    第二步 是用“git commit”提交更改,实际上就是把暂存区的所有内容提交到当前分支。因为我们创建Git版本库时,Git主动为我们创建了唯一一个master分支,所以,现在commit就是往master分支上提交更改。你可以简单理解为,需要提交的⽂件修改通 通放到暂存区,然后,一次性提交暂存区的所有修改

    四.常用Git服务器

    1.github==全球最大的开源网站

    2.码云==免费的,国内的

    3.coding==国内的

    五.安装Git

    1.Linux系统安装Git

    (1)方法一:yum安装

    yum search Git===查看是否有git如果有就下载

    Git --version====查版本

    下最新版本官网:git-scm.com

    注意:默认yum install git 安装的为git 1.7.1版本
    coding上面让要使用的git版本为1.8.0以上,而且这个版本clone的时候有错,所以需要手动安装git

    (2)方式二:手动安装git

    
    	1、安装git依赖包
    		yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
    	2、删除已有的git
    		yum remove git
    	3、下载git源码
    		wget https://www.kernel.org/pub/software/scm/git/git-2.8.3.tar.gz 
    		tar -zxvf git-2.8.3.tar.gz
    		cd git-2.8.3
    		./configure prefix=/usr/local/git/
    		make && make install
    	4、将git指令添加到bash中,添加到环境变量中
    		vi /etc/bashrc
    		在最后一行介入
    		export PATH=$PATH:/usr/local/git/bin
    		source /etc/bashrc  即可
    		git --version   git已经安装好,可以查看git版本
    

    2.window中安装

    这里我们演示Win系统的安装,暂不考虑Linux系统

    下载安装客户端,安装成功检查是否安装是否成功

    方法一:桌面右击鼠标出现git bash here

    在界面中输入git --version显示版本

    方法二:运行cmd中输入git --version显示版本

    六、Git操作(以github网站为例)

    1.注册并登录Github网站

    常规注册,注意一点需要邮箱认证,否则不能创建项目

    2.Github上创建仓库

    (1)新建一个仓库(Repositories),填写项目名和项目说明,创建成功会生成一个网址
    在这里插入图片描述
    在这里插入图片描述
    填写好了内容之后,点击下方的 create repository ,资源库就创建成功。

    3.获取项目—从服务器(云端)获取项目到本地

    本地找一个文件夹存放文件,然后右键打开git执行下面代码,可将自己或者别人项目拿到本地

    在这里插入图片描述

    git clone https地址====将仓库克隆到本地
    

    注意:【创建ssh密钥】也可以在之前创建

    创建的目的是为了保证安全性,只有具有密钥的管理员才可上传,其他人只可以下载

    git中输入指令可以生成密钥===ssh-keygen,生成私钥id_rsa和公钥id_rsa.pub
    (连续按4次回车即可,如果想指定文件夹可以在第一次回车后面添加存秘钥的路径)

    $ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Users/.ssh/id_rsa):          // 回车,或添加路径
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /c/Users/.ssh/id_rsa.
    Your public key has been saved in /c/Users/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:M3bSS3AJiXSEBSs9/bVFYFRjUu3DnsONXR0 
    The key's randomart image is:
    +---[RSA 2048]----+
    |  oo+o++. .+++  |
    |  oo  o... +.o E |
    |   o    . o.o + .|
    |  .      +o  o o |
    |   . .  O . +  |
    |    . ...O * . o |
    |       +  o . . .|
    |      . .  .  .+.|
    |            .oo..|
    +----[SHA256]-----+
    
    

    此时在本地用户下面的.ssh文件夹下(默认路径)会生成公钥和私钥文件,私钥id_rsa和公钥id_rsa.pub
    在这里插入图片描述
    将公钥粘贴到github账户中的setting下’'SSH and GPG keys ”
    在这里插入图片描述
    这里写图片描述
    这里写图片描述
    在这里插入图片描述
    生成之后也可以删除,再重新从本地生成。

    将远端仓库添加到本地
    git remote add origin +url地址**======关联远端仓库(origin是默认的)

    在这里插入代码片
    

    4.下拉项目更新本地

    在本地看到服务器最新的代码(更新修改情况)

    git pull    ====  从服务器更新代码
    

    5.本地推送到服务器

    先在本地实施版本控制,即创建版本库,又叫仓库(repository)

    (1)创建仓库(版本库),选择一个合适的位置创建一个空目录

    cd e:/gitfile          # 切换到指定文件夹下
    mkdir +文件名     #文件名和路用英文,文件编辑可用notepad++
    cd 文件名
    

    这一步也可以直接在本地完成,手动新建文件夹

    (2)进入目标文件夹(想推送的文件所在文件夹)

    git init    初始化Git仓库,将这个目录可以变为仓库
    git add +文件名    添加指定文件
    (或者git add .     添加所有文件)
    
    git status  查看当前状态
    

    在这里插入图片描述
    (3)提交文件

    git  commit  -m  "我写的内容原因"   
    (注意:提交原因必须写,否则不能推送)
    

    在这里插入图片描述
    (4)推送文件到服务器

    git push +仓库url 
    或者git push origin  master          // origin是项目默认名字
    例如:git push https://github.com/code369/git-test
    
    

    在弹出的窗口中输入账号和密码
    在这里插入图片描述
    【注意】:如果出现push报错,可使用下列语句
    在这里插入图片描述

     git pull origin master --allow-unrelated-histories
    
    

    七.配置免密码推送

    在网站上创建项目的时候会有两种方式https和ssh

    1、Linux中免密码push和pull(使用https方式)

    1、cd ~
    2、vi .git-credentials
    		在里面写入  https://{username}:{password}@github.net
    3、git config --global credential.helper store
    

    2、windows系统中设置免密码

    windows下面的 ~ 就是这个目录  C:\Users\用户名
    【注】在windows下面创建以点 开头的文件,需要使用gitbash
    打开gitbash
    然后和上面的操作一模一样,完成后只有第一次需要输入密码
    

    3、使用ssh方式免密码登录

    1、使用 ssh-keygen 生成公钥和私钥,直接按3个回车即可
    2、在  ~/.ssh/id_rsa.pub 里面的内容复制到coding上面的个人设置公钥中
    3、git clone git@git.coding.net:phpmonkey/hehe.git  即可
    

    八、冲突解决

    a和b同时修改同一个文件的同一行代码就会产生冲突,如果a先push,那么b在push的时候就会报错。所以,为了保险起见,只要想向服务端push内容,首先需要pull内容,pull下来之后就会将服务端的代码和本地的代码进行合并,如果有冲突,就会显示冲突(git diff),如果没有冲突,那就合并成功,然后再push上去即可,如果有冲突,商量解决冲突即可

    git pull    下拉文件
    git diff    查看冲突
    

    九、分支学习

    主分支:master,默认分支
    新建分支: git branch 分支名
    查看分支: git branch
    切换分支: git checkout 分支名
    (实际项目中,每个人都要在自己的分支上工作,最后再合并到如果要在master
    上面合并分支,需要先切回到master(master是默认的主目录)
    
    合并分支: git merge +分支名字
    删除分支:git branch -d +分支名
    (如果分支没有合并不能删除)
    强制删除: git branch  -D +分支名字
    (如果分支没有合并要删除可以使用)
    

    十、开发步骤

    一个master,一个dev

    (1)新建一个dev
    (2)切换到dev进行开发
    (3)在dev添加文件并且提交文件
    (4)切换到master分支
    (5)将dev分支合并到master分支
                git merge dev
    (6)推送master到服务端
    (7)继续切换到dev进行开发
    

    十一、git常用操作小总结

     git init    =====  建仓库, 初始化Git仓库
    
    git add 说明.txt  =====     把文件(这里指“说明.txt")纳入暂存区(还没有真正纳入版本控制,需要再一步确认)
    
    git status =======查看暂存区状态
    
    git commit  -m '...'  提交纳入仓库(要写原因所以要加 -m)====git commit  -m  "说明内容"
    
    注意:第一次提交需要先提交姓名和邮箱,否则会报错
    
    git log  ===== 查看提交日志
    
    git  checkout  - -  ====删除文件还原:
    
    git reset  -- hard     =====版本号码(至少写五位)       回到历史版本号版本
    
    git reflog    =======   回到删除的未来版本(过去将来时)
    

    十二、两个小案例

    1.在Linux本地做版本控制

    (1)在用户主目录创建文件夹,命名为gitdemo====mkdir gitdemo

    进入文件夹cd    gitdemo--->ls查看
    
    [root@izwz9ao2nl8wvmgaymeyr0z ~]# mkdir gitdemo
    [root@izwz9ao2nl8wvmgaymeyr0z ~]# ls
    abc   def       eakkkk.txt  git-2.18.0.tar  index.html    mycal.py  Python-3.6.5      
    code  dump.rdb  git-2.18.0  gitdemo         index.html.1  mysql     Python-3.6.5.tar 
    

    (2) git初始化,将gitdemo文件夹变成git仓库==git init

    [root@izwz9ao2nl8wvmgaymeyr0z ~]# git init 
    

    (3)创建一个文本文件,命名为hello.txt,放入内容==echo命令,用 >进行重定向

    echo"Hello,Git" > “hello.txt” 注意:输出重定向符号 >
    =====将Hello,Git内容显示在hello.txt文件中,再次输出内容 不变

    查看文件写好了没有 cat hello.txt

    可以再追加一点内容

    echo "goodbey world" >> hello.txt
    

    (4)将内容纳入版本控制===git add+文件名

    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git add hello.txt
    

    完成这一步并没有真正的纳入版本控制,只是放到了暂存区(是隐藏文件)

    通过命令ls -a 可以 查看该路径下所有文件(包括隐藏文件,a代表all),看到隐藏文件…git

    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# ls -a
    .  ..  .git  hello.txt
    

    【补充命令操作】

    git rm --cashed +文件名 撤销删除文件( 内容已经放到暂存区了,把删除的文件撤销删除,从暂存区拿回)

    git checkout – hello.txt 工作区写的文件b还没有放到暂存区,把暂存区文件a拿回来回到工作区,用暂行区内容a覆盖工作区内容b(注意双连接线两侧的空格)

    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# rm hello.txt
    rm: remove regular file ‘hello.txt’? y
    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# ls      此时文件显示为空
    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git checkout -- hello.txt
    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# ls    此时文件恢复回来
    hello.txt
     [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# cat hello.txt 
     ==查看一下文本内容,也没有丢失,重新恢复
    Hello,Git
    goodbey World
    

    (5)提交到=====git commit -m 提交(-m的目的是要求写原因)

    [root@izwz9ao2nl8wv]# git commit -m "新增了hello.txt文件"
    1 file changed, 2 insertions(+)
     create mode 100644 hello.txt
    
     【注意】第一次提交前需要进行全局设置,用户名和邮箱,名字任意
    
    [root@izwz9aor0z gitdemo]# git config --global user.email 
    "333@example.com"
    [root@izwzymeyr0z gitdemo]# git config --global user.name "hao"
    

    (6)【补充】–其他操作

    每次提交会产生一个日志git log ====查看日志

    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git log
    commit 37e58587772d49119a14b68decc02ed155945d06 (HEAD -> master)
    Author: hao <333@example.com>
    Date:   Mon Jul 30 09:47:47 2018 +0800
    
        新增了hello.txt文件
    

    查看历史版本=======git reset --hard +版本号(最少5位)可以找到历史版本

    			方法二:**git reset --hard HEAD^**======回到当前版本的上一个版本
    

    【例】对这两种方法演示

    步骤a: 先复制一个文件,这利用之前的code文件下的share_fish为例
    

    注: Linux cp命令主要用于复制文件或目录。
    格式: cp ./code/test/ newtest====将code目录下的test文件复制到新目录newtest

    [root@iaymeyr0z gitdemo]# cp ../code/share_fish.py ./    将分鱼文件复制到当前文件
    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# ls
    hello.txt  share_fish.py
    
     步骤b:   添加share_fish文件,并查状**态git add和git status命令**
    
    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git add share_fish.py
    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
    	new file:   share_fish.py
    
     步骤c:提交----此时文件夹下增加了分鱼文件,此时提交git commit -m
    
    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git commit -m "新增了share_fish.py文件"
    [master f6fb32a] 新增了share_fish.py文件
     1 file changed, 22 insertions(+)
     create mode 100755 share_fish.py
    

    步骤d:查看日志git log,此时出现了两个版本

    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git log
    commit f6fb32a62450153c7213cd408c1aa1851268715d (HEAD -> master)
    Author: hao <333@example.com>
    Date:   Mon Jul 30 09:58:49 2018 +0800
    
        新增了share_fish.py文件
    
    commit 37e58587772d49119a14b68decc02ed155945d06
    Author: hao <333@example.com>
    Date:   Mon Jul 30 09:47:47 2018 +0800
    
        新增了hello.txt文件
    

    注意:最新的版本head指向谁谁就是最新版本

    步骤e:回到刚才版本======git reset --hard HEAD^

    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git reset --hard HEAD^
    HEAD is now at 37e5858 新增了hello.txt文件
    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git log
    commit 37e58587772d49119a14b68decc02ed155945d06 (HEAD -> master)
    Author: hao <333@example.com>
    Date:   Mon Jul 30 09:47:47 2018 +0800
    
        新增了hello.txt文件
    

    注意;此时回到了之前的版本,想查看刚才的分鱼文件用git log 查看不到,需要用过去将来式git reflog查看

    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git reflog
    37e5858 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
    f6fb32a HEAD@{1}: commit: 新增了share_fish.py文件
    37e5858 (HEAD -> master) HEAD@{2}: commit (initial): 新增了hello.txt文件
    

    步骤f:现在想从目前为止恢复回来share_fish状态,不能用git reset --hard HEAD^了,需要用历史版本号,通过上面的代码我们找到文件代码为f6fb32a

    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git reset --hard f6fb32a
    HEAD is now at f6fb32a 新增了share_fish.py文件
    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# ls
    hello.txt  share_fish.py
    
    2.Linux本地和服务器项目做关联(以coding网为例)

    本地实施完想放到云端,(即本地做了版本控制,在云端建了项目)一般先在服务器将仓库建好,然后再克隆clone下来,往里面加东西。

    (1)登录coding新建项目,命名为gitdemo;生成项目的URL,复制一下

    (2)加远端仓库

    【命令】git remote add origin +url地址======关联远端仓库(origin是默认的)

    root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git remote add origin https://git.coding.net/qingpingle/gitdemo.git
    

    这样本地和远端项目建立联系

    (3)配置环境变量(否则会报错):

    进主目录 ---->s输入vim .bash profile

    在path后面添加====PATH=$PATH:/usr/local/python36/bin/usr/local/libexec/git-core

    (4)将远端仓库的内容pull到本地:

    	 git pullhttps://git.coding.net/jackfrued/gitdemo.git master  
    
    	git pull =====从远端的master分支拉下来
    

    将本地已经实施了版本控制的内容push到远端仓库:

         【命令】git push origin master     (注意第一次使用,需要-u,目的是为了本地和远端做合并)**
    
           push  -u  (第一次要-u,这样才能实现本地和远端的合并,下一次就不用 - u了)
    
    [root@izwz9ao2nl8wvmgaymeyr0z gitdemo]# git push -u origin master
    Username for 'https://git.coding.net': 
    

    (5)部署公钥(coding项目中左侧部署公钥选择,将生成的密钥可粘贴进去)

    【命令】ssh-keygen===生成密钥对

    输入格式(注意空格和大小写)=====ssh-keygen -t rsa -b 4096 -C"jackess@126.com"(邮箱地址)

    注意: rsa(加密类型)

    	***4096(密码的强度)**
    
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    /root/.ssh/id_rsa already exists.
    Overwrite (y/n)? y
    Enter passphrase (empty for no passphrase):                   这里输入直接跳过
    Enter same passphrase again:                                    跳过,一直回车,最后显示出密钥
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:gPbFDtmdioByI4S+E0tJL7PF3OyZXK9/1mZe5wxkAcs SSSDAD@126.com
    The key's randomart image is:
    +---[RSA 4096]----+
    |..          .    |
    |o. . . + . o o   |
    |= O * + + o E .  |
    | @ B = B .     . |
    |. O o * S     o  |
    | =   =   .   o   |
    |  .     .   . ...|
    |       .   o +.+.|
    |        ..o +.  o|
    +----[SHA256]-----+
    

    此时在 cd /root/.ssh中会生成文件id_rsa

    root@izwz9ao2nl8wvmgaymeyr0z ~]# cd .ssh
    [root@izwz9ao2nl8wvmgaymeyr0z .ssh]# ls
    authorized_keys  id_rsa  id_rsa.pub  known_hosts
    

    cat id_rsa.pub

    [root@izwz9ao2nl8wvmgaymeyr0z .ssh]# cat id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDerB2x/lVOBz5LjR+mhJpigcPXMSwHsiPdK81AKo7lagvP6250aNVoRTouhEaGtDg646CVTknXhF2L5nLMSLjCf3LwtOnu6/eI685LBJ/JCgyAdE73aBRR+mRLeQkRIAdPUy3oNOmnQ1UMX/TeJj3hBr+lDmxmNleSUle7TIl3hHDbQcNHTFnNgWAY4Qn/hujq6rp9fekd594YfuR8Ykd+tJjUHCteQElWRhSxckFQYbJ41d+XgugrVtO18PDZGEvkOTmimwzZylbwnCQDwbGiSDfXZZYuqNH0ZzyqJpyO9CUAh3GzVERuAsJM/f28VoyGRJQSwPivOXsVTgvGy/e4tDpYZ/BIcc03CArcxy8Ztvp2nJYXtca8EasDVwqXneB5nMQoYn2pJg5/SaPU+pPo+Nb4J6e1ea7WwcXjhgM3dpU3rhOko75ZPkX+RvaNH7jHrt5UXDO6uADKT7r9jnhhsznU41E+ifxXSZpg4nGS9DIKY2YyNUAiiQOpU0BsxrsZQTbue1gbbMN1/3CjkVTeX7nFVlBARpauQ3MSc8TwnFSm6CXnDbUfYkymzCzVAMJl7PhC6UQ8gHv4J+GychS/jkhbB2y9NPRTc1Bd6vG5anakRtG2DROOmVmFGQ0b9GegZ1FScL0MtNEwYsYqFrGQSeHp8opxVjsDeo6bOOI5Ww== SSSDAD@126.com
    

    将公钥粘贴到coding项目中“部署公钥”

    (5)克隆到本地并建分支

    在coding网新建项目gitflow

    复制Url

    git clone +url=====克隆到本地

    git branch new-cool-function(新分支名字) =====建分支,命名为new-cool-function

    git checkout new-cool-function(分支名字) ====== 切换到分支(这里分支名字为new-cool-function)

    git checkout -b issue -1120 =======创建并切换到这个分支,即如果没有分支会直接建立这个分支(常用)

    (实际项目中,每个人都要在自己的分支上工作,最后再合并到

    如果要在master上面合并分支,需要先切回到master**(master是默认的主目录)**

    git merge +分支名字 =======合并分支

    git branch -d +分支名字======删除分支

    (如果分支没有合并不能删除)

    git branch -D +分支名字====强制删除

    (如果分支没有合并要删除可以使用)

    如果博文有帮助欢迎点赞或留言,有不足之处欢迎指正。谢谢

    展开全文
  • springboot+swagger+版本控制(文末附demo)

    万次阅读 2018-10-25 19:25:55
    Swagger不做过多介绍了,本篇为大家介绍下springboot+swagger下api接口的版本控制。(文末提供demo下载) 通常情况下服务上线后,会不停的迭代版本(BUG、新需求等),如果没有控制好版本,后期项目会越来越凌乱...

     

    背景:

        Swagger不做过多介绍了,本篇为大家介绍下springboot+swagger下api接口的版本控制。(文末提供demo下载

        通常情况下服务上线后,会不停的迭代版本(BUG、新需求等),如果没有控制好版本,后期项目会越来越凌乱……

    实现效果:    

    根据版本号匹配相应版本接口,找不到相应版本时向下兼容。例(/base接口有v1和v2两个版本分别返回base1,base2,/v1/base查询返回base1,/v2/base查询返回base2, /v5/base查询返回base2……)

    核心代码:

    ApiVersion.java

     

     

    ApiVersionCondition.java

    CustomRequestMappingHandlerMapping.java

    WebApiConfig.java

    contorller层:

    至此版本控制已经可以实现!

    源码下载地址及中央仓库使用:源码下载

    欢迎关注公众号《JAVA拾贝》回复 版本控制 即可下载源码

    展开全文
  • 什么是版本控制版本控制工具?

    千次阅读 2018-08-12 12:17:24
    版本控制: 是一种思想,因为每一个问题不可能在一次解决中找到完美的答案,即写项目的时候不可能做到一次性把代码写的不需要后期修改那样子优雅和完善,所以就需要对每一次自己思路和代码进行保留(而每一次提交或...
  • 1.git版本控制 1.1版本控制 版本控制的英文名称为(Version Control System),主要有以下几个作用。 记录文件的所有历史变化 错误恢复到某个历史版本 多人协作开发编辑同一个文件 1.2主流的版本控制产品 ...
  • 版本控制版本控制系统的区别

    千次阅读 2016-08-08 20:10:57
    版本控制版本控制系统的区别  转载必须声明转载地址http://write.blog.csdn.net/postedit 一、何谓版本控制 它是一种软件工程籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新,它透过文档控制...
  • 版本控制系统

    千次阅读 2018-11-13 08:51:33
    版本控制系统 为什么要有版本控制系统 在开发过程中,经常需要对一个文件进行修改甚至删除,但是我们又希望能够保存这个文件的历史记录,如果通过备份,那么管理起来会非常的复杂。 在多人开发时,如果需要多人合作...
  • Git笔记(1) 版本控制

    万次阅读 2020-02-09 19:53:20
    分布式版本控制系统把代码仓库完整地镜像下来,不同与本地版本控制系统不容易犯错、不同与集中式版本控制系统不容易有丢失所有历史更新记录的风险
  • 什么是集中式版本控制系统与分布式版本控制系统? 集中式版本控制系统:版本库是集中放在中央服务器的,当我们实际工作的时候,用的都是自己的电脑,所以首先要连接中央服务器,从那里得到最新的版本,然后编写或者...
  • 作为一名优秀的程序猿,怎么能不会使用版本控制工具(然而我就不会)? SVN,英文名Subversion,一款很棒的开源版本控制系统,采用分支管理的模式且拥有众多IDE支持,比如Eclipse,MyEclipse,Android Studio等等等...
  • 软件版本控制

    千次阅读 2018-06-29 08:55:08
    浅谈软件版本控制为了规范各平台版本控制及提升整体平台交付质量,现做流程与版本控制,规定如下:1、发布时间:根据需求排期选定每两周作为正式版本上线时间(封板之后,暂不发布新的功能在测试环境。);2、紧急...
  • ElasticSearch版本控制

    万次阅读 2019-03-18 19:30:25
    ElasticSearch版本控制 对人工智能感兴趣的同学,可以点击以下链接: 现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了。最近发现了一个非常适合小白入门的教程,不仅通俗...
  • pycharm 版本控制

    千次阅读 2017-12-15 19:04:21
    在最下面的version control 中 就是版本控制系统 其中 Local Changes 是本地修改的版本库 shelf就是搁置,把当前修改但未commit的代码隔起来,然后下次修改代码还可以拿回来 就是当前正在做A事情,突然有个B事情...
  • 版本控制工具-Git

    千次阅读 2019-12-29 00:16:36
    版本控制工具-Git 一、概述 学习资料: https://git-scm.com/book/zh/v2 什么是版本控制系统? 版本控制软件提供完备的版本管理功能,用于存储、追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是...
  • SVN版本控制软件

    千次阅读 多人点赞 2018-10-31 21:47:21
    SVN版本控制软件 SVN是什么 SVN的全程是subversion,SVN版本控制软件可以解决协助开发、远程开发和版本回退三个问题。 特点:操作简单、入门简单、跨平台操作 。 SVN是输入C/S服务类软件,有客户端和服务端。 SVN的...
  • Git——版本控制为王

    万次阅读 2019-08-01 18:34:44
    前言 单枪匹马,独闯天下的时代已经过去,团队,组织间的协同开发已然成为了主流。那么如何最大化的加快开发时间?...svn,git等一系列版本控制软件应运而生,其中git以其优良的本地版本控制脱颖...
  • 版本控制之道 使用Git

    千次下载 热门讨论 2012-06-26 11:31:42
    程序员修炼三部曲 第1部 版本控制之道 使用Git.pdf
  • 软件版本控制流程

    千次阅读 2017-08-11 10:22:32
    软件版本控制流程
  • 数据库的版本控制

    千次阅读 2018-01-10 18:49:06
    代码的版本控制是很重要的,那数据库的呢?  通过触发器实现数据库的版本控制
  • SVN版本控制工具

    千次阅读 2019-06-19 22:32:50
    SVN是一个跨平台的开源的版本控制系统。SVN版本管理工具管理着随时间改变的各种数据。这些文件放置在一个中央资料档案库中,并且SVN会备份并记录每一个文件每一次的修改更新变动。因此当开发过程中出现问题,可以...
  • Git版本控制

    千次阅读 2016-09-04 10:56:19
    为什么要使用版本控制如果你开发过项目,那你一定有过这样的经理,一种并不是那么好的体验(不能说很糟糕,但最起码不会很如意):想添加或修改一个功能,又怕将来新增或修改的代码会破坏原来的代码,因此,为了安全...
  • APP版本控制问题

    千次阅读 2017-03-02 10:57:42
    现在很多公司APP版本不断迭代,需要兼容旧版本,有了版本控制。 升级版本,我们可以添加新接口进行支持,但是,如果改动较小,只需要传入版本号,进行版本控制。 但是当版本数量较多,老版的使用率极低,没必要做...
  •  版本控制介绍(VCS)  本地版本控制系统(RCS)  集中化的版本控制系统(CVCS)Svn  分布式版本控制系统(DVCS) Git ==================================================================================...
  • 版本控制系统概述

    千次阅读 2016-10-29 12:53:38
    版本控制系统VCS(version control system),是一种记录若干文件变化,以便将来查阅特定版本修改记录的系统。对于编程开发人员来说,我们常使用版本控制系统来对程序源代码进行版本管理。但实际上,我们可以对任何...
  • 数据库的版本控制与代码版本控制的区别在于数据库中的生产数据是现场创造的,当我们的表结构发生改变时,不能直接用drop table然后再create table,因为这样会导致生产数据丢失。而代码则完全由开发人员创造,可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 99,108
精华内容 39,643
关键字:

版本控制