版本控制-Git/SVN

这篇具有很好参考价值的文章主要介绍了版本控制-Git/SVN。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.Git

  • 1.Git是一个免费开源的分布式版本控制系统
  • 2.Git易于学习,占地面积小,性能极快,具有廉价的本地库,方便的暂存区域和多个工作流分支等特性
  • 3.Git性能优于Subversion(SVN)CVS等版本控制工具

1.版本控制

  • 1.版本控制是一种记录工作内容变化,以便将来查阅特定版本修订情况的系统
  • 2.版本控制最重要的是可记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换

1.1.版本控制的原因

  • 1.方便个人开发过渡到团队协作
    版本控制-Git/SVN

1.2.版本控制工具

1.2.1.集中式版本控制工具
  • 1.集中式版本控制工具有Subversion(SVN),CVS
  • 2.集中式的版本控制工具都有一个单一的集中管理服务器,用于保存所有文件的修订版本,协同工作的用户都通过客户端连到该台服务器,取出最新的文件或提交更新
  • 3.优点:可以一定程度上查看项目中成员的进度,管理员可以掌握每个成员的权限,并且管理一个集中化的版本控制系统,比在各个客户端上维护本地数据库方便
  • 4.缺点:中央服务器会出现单点故障,如果服务器宕机,则宕机期间无法协同工作从而影响进度
    版本控制-Git/SVN
1.2.2.分布式版本控制工具
  • 1.分布式版本控制工具有GitMercurial
  • 2.Git分布式版本控制工具中客户端提取的不是最新版本的文件快照,而是把远程代码仓库完整地镜像下来保存在本地库
  • 3.任何一处协同工作用的文件发生单点故障,都可以通过其他客户端的本地仓库进行恢复,因为每个客户端的每一次提取操作,实际上都是一次对整个文件仓库的完整备份
  • 4.分布式的版本控制系统出现了之后,解决了集中式版本控制系统的缺陷(单点故障造成系统瘫痪)
    • 1.服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
    • 2.每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
      版本控制-Git/SVN

2.工作机制

版本控制-Git/SVN

2.1.区域划分

版本控制-Git/SVN

  • 1.Git版本控制工具可以划分为三个区域
    • 1.工作区(workspace):项目代码存放本地磁盘的位置
    • 2.暂存区(Index / Stage):临时存放改动的代码,本质是一个文件(.git目录下的index文件),保存即将提交到本地库的信息
    • 3.本地库(local Repository):将暂存区中的代码提交到本地库,生成对应的历史版本(无法删除),下个版本基于上一个版本,所以无法删除中间的版本,其中HEAD指向最新放入仓库的版本
  • 2.远程库(Remote Repository):远程仓库,托管代码的服务器,将本地库代码推送到远程库(Push)

2.2.工作流程

版本控制-Git/SVN

  • 1.区域说明
    • 1.左侧为工作区
    • 2.右侧为版本库
    • 3.版本库中标记为index的区域是暂存区(stage/index)
    • 4.版本库中标记为master的是master分支所代表的目录树
    • 5.版本库中标记为HEAD的是指向master分支的一个游标
    • 6.版本库中标记为objects的是Git的对象库,位于.git/objects目录下,其中包含创建的各种对象及内容
  • 2.工作流程
    • 1.当对工作区中修改或新增的文件执行git add命令时,暂存区的目录树被更新同时工作区修改或新增的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引
    • 2.当对暂存区中的内容执行提交操作git commit命令时,暂存区的目录树写到版本库中,master分支会做相应的更新,即master指向的目录树就是提交时暂存区的目录树
    • 3.当对暂存区中的内容执行回滚操作git reset HEAD 命令
    • 3.当对版本库中的内容进行回滚 时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
    • 4.当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。
    • 5.当执行 git checkout . 或者 git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
    • 6.当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动
    • 7.我们使用 git clone 从现有 Git 仓库中拷贝项目
  • git clone
  • git clone
  • repo:Git 仓库。
  • directory:本地目录
  • 比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:
  • $ git clone git://github.com/schacon/grit.git
  • 执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。
  • 如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
  • $ git clone git://github.com/schacon/grit.git mygrit

4.git忽略指定文件的提交

  • 1.首先在git管理的文件夹根目录下创建一个名为.gitignore的文件
  • 2.然后将需要忽略的文件都放在这里
  • 3.注意:这种方式对应已经提交到git上面的文件石无法奏效的
  • 4.例如在.gitignore文件添加到git之前,.project文件已经托管提交给git了,那后面在.gitignore这个文件里添加.project表示忽略这个文件也不行,git依然会提交
  • 1.忽略某个已经托管给git的文件,防止二次提交
  • 2.这种情况适用于,每个人修改了项目的配置,但是这个是临时的,只适用于自己本地的情况,不可提交给大家公用时,需要这么做
# 执行命令将文件加入不提交队列
git update-index --assume-unchanged 你的文件路径
# 执行命令将文件取消加入不提交队列
git update-index --no-assume-unchanged 你的文件路径

5.git提交忽略已加入版本库的文件

  • 1.git rm --cached file
  • 当我们需要删除暂存区或分支上的文件,同时工作区 ‘不需要’ 这个文件,可以使用 ‘git rm’
  • 2.git rm file
  • 3.git commit -m ‘delete file’
  • 4.git push
  • 当我们需要删除暂存区或分支上的文件,但是本地 ‘需要’ 这个文件,只是 ‘不希望加入版本控制’,可以使用 ‘git rm --cached’
  • 1.git rm --cached file
  • 2.git commit -m ‘delete remote file’
  • 3.git push

3.3.基础配置

  • 1.Git的设置一般使用git config命令
    • 1.显示当前Git的配置信息:git config --list
      版本控制-Git/SVN
    • 2.编辑Git配置文件信息
      • 1.git config -e: 针对当前仓库
      • 2.git config -e --global: 针对系统上所有仓库
      $ git config --global user.name "runoob" #只对当前仓库有效
      $ git config --global user.email test@runoob.com # 对所有仓库都有效
      

3.代码托管中心

  • 1.代码托管中心是基于网络服务器的远程代码仓库,一般简称远程库
  • 2.局域网:GitLab
  • 3.互联网:GitHub(外网),Gitee码云(国内网址)

4.Git安装步骤

版本控制-Git/SVN
版本控制-Git/SVN

版本控制-Git/SVN

  • 1.注意需要安装到非中文并且没有空格的目录下
  • 2.安装后查看Git版本
    git --version
    
    版本控制-Git/SVN

5.Git命令

5.1.设置用户签名

  • 1.git config --global user.name 用户名:设置用户签名
  • 2.git config --global user.email 邮箱:设置用户签名
    版本控制-Git/SVN
  • 3.验证签名文件(进入电脑的本地用户中,查看.gitconfig信息)
    版本控制-Git/SVN
  • 4.用户签名的作用:区分不同成员身份,成员的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交的来源,Git首次安装必须设置用户签名,否则无法提交代码
  • 5.注意:该设置用户签名和登录GitHub的账号没有任何关系

5.2.初始化本地库

  • 1.基本语法
    git init
    
  • 2.初始化:Git管理目录获取Git目录的管理权,且初始化后会在初始化的目录中生成隐藏的.git文件夹,项目的快照数据都存放在该文件夹中
    版本控制-Git/SVN
    版本控制-Git/SVN

5.3.查看本地库状态

  • 1.基本语法
    git status
    
  • 2.说明
    • 1.第一行:本地库在哪个分支
    • 2.第二行:还没有提交内容
    • 3.第三行:没有内容需要提交(红色表示还没有提交到暂存区)
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN

5.4.添加暂存区

  • 1.基本语法

    git add . //将所有文件都添加到暂存区
    git add *.c //将后缀为.c的文件添加到暂存区
    git add 文件名	// 将指定文件添加到暂存区
    
  • 2.将工作区中的文件添加到在暂存区(绿色表示已经提交到暂存区)

    版本控制-Git/SVN

5.5.删除暂存区中的文件

  • 1.基本语法
    git rm --cached 文件名
    
  • 2.该删除只是删除了暂存区中文件,而没有删除工作区中的文件
    版本控制-Git/SVN

5.6.提交本地库

  • 1.基本语法
    git commit -m "日志信息" 文件名
    //Linux系统中,commit信息使用单引号;Windows系统中,commit信息使用双引号
    
  • 2.将暂存区的文件提交到本地库
    版本控制-Git/SVN
  • 3.noting to commit,working tree clean表示暂存区没有东西需要提交
    版本控制-Git/SVN
  • 4.一行删除,一行添加,表示修改,先删除掉再添加进去
    版本控制-Git/SVN
    版本控制-Git/SVN
    版本控制-Git/SVN

5.7.历史版本

  • 1.基本语法
    git reflog //查看版本信息
    git log //查看版本详细信息
    
    版本控制-Git/SVN
5.7.1.查看历史记录
  • 1.基本语法
     git reflog
    
  • 2.其中097e939和8d61690是7位简短版本号
    版本控制-Git/SVN
5.7.2.查看日志
  • 1.基本语法
     git log
    
  • 2.其中包括完全版本号,作者信息,日期和日志信息
    版本控制-Git/SVN
5.7.3版本穿梭
  • 1.基本语法
     git reset --hard 版本号
    
    版本控制-Git/SVN
  • 2.进入Git版本目录文件的HEAD文件,指针指向master,说明当前是在master分支上
    版本控制-Git/SVN
  • 3.打开msater文件,该版本号指向第二个此修改历史记录,说明当前是在master分支下的第二修改版本
    版本控制-Git/SVN
    版本控制-Git/SVN
  • 5.注意:Git切换版本,底层其实是移动的HEAD指针

6.Git分支

版本控制-Git/SVN

6.1.分支原理

  • 1.版本控制过程中,同时推进多个任务,可以创建每个任务的单独分支
  • 2.使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行
  • 3.分支底层其实也是指针的引用
    版本控制-Git/SVN
  • 4.master是主线分支,从master复制一份到feature-blue上进行开发,开发完后,提交到master
  • 5.如果合并后导致问题,可以引入一个hot-fix(热修分支),把有问题的代码修改一下,如果没有问题再合并到master

6.2.分支好处

  • 1.同时并行推进多个功能开发,提高开发效率
  • 2.各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可

6.3.分支的操作

  • 1.git branch -a:查看所有分支(本地和远程)
  • 2.git branch:查看本地分支
  • 3.git branch -r:查看远程分支
  • 1.git branch -v:查看本地分支及最新的信息
  • 2.git branch 分支名:创建分支
  • 3.git chekout 分支名:切换分支
  • 4.git merge 分支名:把指定的分支合并到当前分支上
6.3.1.查看分支
  • 1.基本语法
    git branch -v
    
    版本控制-Git/SVN
6.3.2.分支创建
  • 1.基本语法
    git branch 分支名
    
    版本控制-Git/SVN
6.3.3.分支切换及修改
  • 1.基本语法
    git checkout 分支名
    
  • 说明:
    • 1.master,hot-fix其实都是指向具体版本记录的指针
    • 2.当前所在的分支,其实是由HEAD决定的,所以创建分支的本质就是多创建一个指针
    • 3.HEAD如果指向master,那么现在就在master分支上
    • 4.HEAD如果执行hotfix,那么现在就在hotfix分支上
    • 5.所以切换分支的本质就是移动HEAD指针
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
6.3.4.分支合并
  • 1.基本语法
    git merge 分支名
    
    版本控制-Git/SVN
    版本控制-Git/SVN
6.3.5.代码合并冲突解决
  • 1.合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改
  • 2.Git无法替我们决定使用哪一个,必须人为决定新代码内容
  • 3.如下:master分支和hot-fix分支同时修改了同一个文件的同一处代码
  • 4.查看状态(检测到有同一个文件的同一个位置有两处不同修改,产生冲突both modified)
  • 5.此时需要手动修改该冲突文件,然后提交到合并文件中
    版本控制-Git/SVN
    版本控制-Git/SVN
    版本控制-Git/SVN
    版本控制-Git/SVN

7.Git团队协作机制

  • 1.团队内协作
    版本控制-Git/SVN

  • 2.跨团队协作
    版本控制-Git/SVN

  • 3.fork(叉子):把所有代码作为一个分支复制过来

8.Idea集成Git

9.GitGub

  • 代码托管中心
  • 远程仓库操作
  • git remote -v:查看当前所有远程地址别名
  • git remote add 别名 远程地址:起别名
  • git push 别名 分支:推送本地分支上的内容到远程仓库
  • git clone 远程地址:将远程仓库的内容克隆到本地
  • git pull 远程库地址别名 远程分支名:将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
1.创建远程仓库别名
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址

版本控制-Git/SVN

2.推送本地分支到远程仓库

git push 别名 分支

版本控制-Git/SVN

  • 注意需要认证,sign in即可
3.拉取远程库到本地库

版本控制-Git/SVN

  • 远程拉取的会自动同步到本地库,不需要再次提交到本地库

克隆远程库到本地库Clone

  • 克隆代码是不需要登录账号的,因为创建时是公共的,读权限是公共的
    版本控制-Git/SVN
  • clone会做如下操作
  • 1.拉取代码
  • 2.初始化本地仓库
  • 3.创建别名
    版本控制-Git/SVN
  • 默认别名是origin
    版本控制-Git/SVN
  • 注意需要删除凭据管理
  • 还需要对运行提交的人员进行授权

跨团队协作

SSH免密登录

版本控制-Git/SVN
版本控制-Git/SVN
版本控制-Git/SVN

  • 进入该文件
    版本控制-Git/SVN
  • 公钥和私钥
  • Idea集成GitHub

GitLab(基于局域网的代码托管中心)

1.简介

  • 1.GitLab是一个仓库管理系统的开源项目,其使用Git作为代码管理工具,并在此基础上搭建起来web服务
  • 2.GitLabGitHub一样都属于第三方基于Git开发的作品,免费且开源(基于MIT协议)
  • 3.Github可以在远程服务器上注册用户,任意提交代码,添加SSHKey等,而GitLab可以部署到自己的服务器,数据等一切信息都掌握在自己手上,适合团队内部协作开发,简单来说可以把GitLab看作个人版的GitHub

2.安装

  • 1.参考Linux软件安装文章中Linux系统下安装GitLab

3.创建组/用户/项目

  • 1.创建组
    • 1.使用管理员root创建组,组里面可以创建多个项目分支
    • 2.将不同的开发添加到组里面并设置权限,不同的组就是公司不同的开发项目或者服务模块
    • 3.不同的组添加不同的开发即可实现对开发设置权限的管理
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN
      版本控制-Git/SVN

4.上传代码

版本控制-Git/SVN
版本控制-Git/SVN
版本控制-Git/SVN
版本控制-Git/SVN
版本控制-Git/SVN
版本控制-Git/SVN
版本控制-Git/SVN文章来源地址https://www.toymoban.com/news/detail-482133.html

Gitee码云(国内版本的GitGub)

  • 码云创建远程库
  • Idea集成Gitee码云
  • 码云连接GitHub进行代码的复制和迁移

到了这里,关于版本控制-Git/SVN的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git——分布式版本控制系统

    Git是一个开源的分布式版本控制系统,可以高效的处理从小到很大的项目版本管理。 集中式 SVN,CVS 使用单一的服务器用来管理和存储所有文件的修订版本;协同开发的成员拉取或提交都需连接到这台服务器;如果服务器宕机,宕机期间任何人都不能拉取或提交,无法做到协

    2024年02月10日
    浏览(55)
  • Git 分布式版本控制系统

    版本控制系统是一种记录文件变更历史的系统,它允许开发者跟踪文件的修改、还原特定版本、并在多个用户之间协同工作。VCS 主要有两种类型:集中式版本控制系统(Centralized VCS,如 SVN)和分布式版本控制系统(Distributed VCS,如 Git)。 版本追踪: 可以追踪文件的每一次

    2024年01月17日
    浏览(44)
  • Git----分布式版本控制系统

    Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。它是世界上目前最先进的分布式版本控制系统。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。 Git与常用的版本控制工具CVS、Subversion等不同,它采用了分布

    2024年02月15日
    浏览(58)
  • 分布式版本控制系统 Git

    目录 一、Git简介 二、Git历史 三、安装git 1.准备环境 2.Yum安装Git 四、初次运行 Git 前的配置 命令集 实例: 五、Git命令常规操作  六、获取 Git 仓库(初始化仓库) 创建裸库 实例 : 创建本地库         官网:Git         git是一个分布式版本控制软件,最初由林纳斯

    2024年02月22日
    浏览(48)
  • git分布式版本控制系统

    右键菜单 选择Git Bash Here,输入任意一条后回车来查看当前Git软件的安装版本。 2.1 区域 Git软件为了更方便地对文件进行版本控制,根据功能得不同划分了三个区域 存储区域:Git软件用于存储资源得区域。一般指得就是.git文件夹 工作区域:Git软件对外提供资源得区域,此区

    2024年03月21日
    浏览(57)
  • Git分布式版本控制工具(详细笔记)

    git config -- global user.name\\\"itcast\\\" git config -- global user.email\\\"hello@itcast.cn\\\" (邮箱没有什么用,我这里就简单写了) git config -- global user.name  git config -- global user.email 有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。 1.打开用户目录,创建.bashrc文件      部分

    2024年02月14日
    浏览(48)
  • 分布式版本控制系统git详解

    是目前世界上最先进的分布式版本控制系统 git命令 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。 Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Lin

    2024年02月15日
    浏览(44)
  • 【Linux】分布式版本控制工具git

    ​ ​📝个人主页:@Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯 长路漫漫浩浩,万事皆有期待 上一篇博客:【Linux】Linux调试器 - gdb 大家可能用过 Github, Gitee 等代码托管平台。实际上这些平台都是可以通过 git 来进行管理的,而 git 本身

    2024年02月07日
    浏览(43)
  • Git分布式版本控制系统——Git常用命令(二)

    五、Git常用命令————分支操作 同一个仓库可以有多个分支,各个分支相互独立,互不干扰 分支的相关命令,具体如下: git branch                               查看分支 git branch [name]                   创建分支(name是分支名) git checkout [name]                切

    2024年04月10日
    浏览(41)
  • Linux | 分布式版本控制工具Git【版本管理 + 远程仓库克隆】

    本文来为读者介绍一下分布式版本控制工具Git,可能你听说过Gitee/GitHub,里面都带有git的字样,那它们和Git之间有什么关联呢❓ Git又是何物,让我们一起走进本文的学习📖 Git(读音为/gɪt/)是一个 开源的分布式版本控制系统 ,可以有效、高速地处理从很小到非常大的项目

    2024年02月01日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包