• Git从入门到项目实战,一篇文章吃透Git


    在这里插入图片描述
    博主今天刚学完Git就来总结笔记了,Git好强大,不愧是目前世界上最先进的分布式版本控制系统

    ✨即使再小的帆也能远航✨

    在这里插入图片描述


    🔎Git

    Git 诞生于一个极富纷争大举创新的年代,Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码,后与BitKeeper出现矛盾终止合作,迫使Linux 开源社区(特别贡献 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper时的经验教训,用时两周开发出自己的版本系统也就是Git

    版本控制

    1. 概念
      版本控制是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术

    2. 特点
      实现跨区域多人协同开发
      追踪和记载一个或者多个文件的历史记录
      ●组织和保护你的源代码和文档
      ●统计工作量
      并行开发、提高开发效率
      跟踪记录整个软件的开发过程
      ●减轻开发人员的负担,节省时间,同时降低人为错误的影响

    版本控制多适用于管理多人协同开发的项目技术,在我们平时开发过程中有很多协同问题,比如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题,在我们的生活和笔记中用一个版本控制器会大大提高我们的效率


    🔥常见版本控制工具

    目前主流的版本控制器有如下:
    Git
    SVN(Subversion)
    CVS(Concurrent Versions System)
    VSS(Micorosoft Visual SourceSafe)
    TFS(Team Foundation Server)
    Visual Studio Online

    还有很多很多版本控制产品:Perforce、Rational ClearCase、RCS、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault)现在影响力最大且使用最广泛的是Git与SVN


    🔥版本控制分类

    👌本地版本控制

    记录下本地每次文件(或版本、补丁文件)的更新,适合个人使用,版本控制工具:RCS
    在这里插入图片描述

    👌集中版本控制

    所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
    版本控制工具:SVN、CVS、VSS
    在这里插入图片描述
    用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。且所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份

    👌分布式版本控制

    所有版本信息仓库全部同步到本地的每个用户,用户可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用

    它不会因为服务器损坏或者网络问题,造成不能工作的情况

    在这里插入图片描述


    🎈Git 与SVN 的区别

    Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,协同的方法:如自己在电脑上更改文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新的代码和文件
    Git是目前世界上最先进的分布式版本控制系统

    SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作时用的是自己的电脑,所以要从中央服务器得到最新的版本后再工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高


    Git下载与安装

    🎁温馨提示: 一般在下载都很慢,可以在镜像网站中下载就舒服多了
    淘宝镜像网站http://npm.taobao.org/mirrors/git-for-windows/
     
    到最下面下载最新版本就行
    在这里插入图片描述
     
    选择适合自己的位数
    在这里插入图片描述


    打开 git 官网 >> https://git-scm.com/
    在这里插入图片描述
    选择自己需要的版本
    在这里插入图片描述
    下载完成后,双击安装:无脑式下一步next 即可
    在这里插入图片描述
     
    下载完成后
    在开始菜单中
    在这里插入图片描述

    Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
    Git CMD:Windows风格的命令行
    Git GUI:图形界面的Git


    Git基本知识

    🔥常用命令(Linux)

    命令作用
    cd改变目录
    cd . .回退到上一个目录
    pwd显示当前所在的目录路径
    ls(ll)列出当前目录中的所有文件
    touch新建一个文件
    rm删除一个文件
    mkdir:新建一个目录(文件夹)
    rm -r删除一个文件夹
    rm -rf /切勿在Linux中尝试,会删除电脑中全部文件
    mv移动文件, mv 文件名 目标文件夹,须保证文件和目标文件夹在同一目录下
    reset重新初始化终端/清屏
    clear清屏
    history查看命令历史
    help帮助
    exit退出
    #表示注释

    查看配置

    git config -l
    
    • 1

    在这里插入图片描述
    查看不同级别的配置文件:

    #查看系统config
    git config --system --list
      
    #查看当前用户(global)配置
    git config --global  --list
    
    • 1
    • 2
    • 3
    • 4
    • 5

    设置用户名与邮箱
    必要的
    设置一次就行了

    git config --global user.name "名称"
    git config --global user.email "邮箱"
    
    • 1
    • 2

    🔥分支

    分支就是从开发主线分离进行重大bug的修改,开发新功能,以免影响开发主线
    在这里插入图片描述

    查看本地分支

    git branch
    
    • 1

    查看远程分支

    git branch -r
    
    • 1

    创建本地分支
    依旧在当前分支

    git branch 分支名
    
    • 1

    切换分支

    git checkout 分支名
    
    • 1

    创建并切换分支

    git checkout -b 分支名
    
    • 1

    合并分支

    git merge 分支名称
    
    • 1

    删除分支
    不能删除当前分支,应切换到其他分支再删除需删除的分支

    # 删除,可能会删除失败
    git branch -d 分支名
    # 强制删除分支
    git branch -D 分支名 
    
    • 1
    • 2
    • 3
    • 4

    🎁分支冲突:
    如果同一个文件在合并分支时都被修改了则会引起冲突:解决办法是我们可以修改冲突文件后重新提交,中进行选择要保留他的代码还是你的代码
    🎁主分支:
    主分支master应非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后dev分支代码稳定后可以合并到主分支master上来


    🔥三个区域

    关系图
    在这里插入图片描述

    👌工作区

    Working Directory
    平时存放项目代码的地方

    👌暂存区

    Stage/Index
    用于临时存放你的改动,保存即将提交到文件列表信息

    👌仓库

    Git Directory
    存放数据的位置以及提交到所有版本的数据

    如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域

    git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

    个人本地仓库的搭建
    选中一个文件夹,在git bash中运行
    创建全新的个人仓库

    # 在当前目录新建一个Git代码库
    $ git init
    
    • 1
    • 2

    码云gitee

    🔥gitee的使用

    国内好用的远程仓库
    用github很慢,不方便,这个也一样

    官网 >> https://gitee.com/
    注册并登录后

    新建仓库
    在这里插入图片描述
    填写好信息即可创建
    在这里插入图片描述
    之后复制下图中的链接就可以在本地克隆远端仓库的代码文件了
    在这里插入图片描述

    🔥配置SSH公钥

    在C盘用户名下文件夹 .ssh 右键,点击下图
    在这里插入图片描述
    输入
    ssh-keygen -t rsa
    不断回车至下图 (按默认信息,不用管)
    在这里插入图片描述

    检验是否配置成功
    **ssh -T git@gitee.com**出现下图就是成功
    在这里插入图片描述
    成功后会在 .ssh 中生成两个文件
    在这里插入图片描述
    点击框选的文件,并复制里面的内容(密钥),粘贴到下图
    复制的时候尽量不要用 Ctrl+C
    在个人设置中
    在这里插入图片描述
    点击确定绑定成功

    🔥操作远端仓库

    绑定远程仓库地址

    # 远端名称,默认是origin;仓库路径,从远端服务器获取此URL
    git remote add <远端名称><仓库路径>
    
    • 1
    • 2

    查看远程仓库

    git remote
    
    • 1

    从仓库推送远程仓库

    # -f 表示强制覆盖
    # --set-upstream推送到远端的同时并建立起和远端分支的关联关系
    git push [-f][--set-upstream][远端名称[本地分支名][远端分支名]]
    
    • 1
    • 2
    • 3

    若远程分支名和本地分支名相同,则可以只写本地分支:git push origin master

    查看本地分支与远程分支关系

    git branch -vv
    
    • 1

    克隆远端仓库

    # 克隆一个项目和它的整个代码包括版本信息
    $ git clone #链接
    
    • 1
    • 2

    从远程仓库抓取
    将仓库的更新都抓取到本地,不会进行合并

    git fetch[remote name][branch name]
    
    • 1

    从远程仓库拉取
    将远端仓库的修改拉到本地并自动进行合并

    git pull[remote name][branch name]
    
    • 1

    IDEA集成Git

    idea绑定Git两种方法:
    第一种:把远程仓库克隆过来的文件夹(已经绑定了远端仓库)中的所有东西拷贝到目标项目中
    请添加图片描述

    第二种:创建项目时在远程仓库克隆过来的文件夹下创建
    这个创建完成之后
    请添加图片描述
    idea左侧文件的颜色
    红色:选中状态
    绿色:被添加到暂存区了(新版IDEA会自动添加到暂存区)

    🔥添加到暂存区方法

    1.右键目标文件
    请添加图片描述
    2. IDEA下方 Terminal 输入命令
    请添加图片描述
    3. 点击IDEA右上角绿色箭头请添加图片描述
    勾选你想提交的文件就行
    请添加图片描述


    Git是目前世界上最先进的分布式版本控制系统,学了一天收获也不少,有什么问题欢迎wx哦~

  • 相关阅读:
    Java进阶书籍推荐
    公钥加密如何确保数据的完整性
    酒店管理系统|基于java和小程序的酒店管理小程序系统设计与实现(源码+数据库+文档)
    FinGPT:开源金融大型语言模型
    Lua,ILRuntime, HybridCLR(wolong)/huatuo热更新对比分析
    Win7 easy connect 提示:选路连接失败,可能当前连接网络异常,请稍后重试
    【视频图像篇】FastStone Capture屏幕直尺功能设置
    Util应用框架基础(三) - 面向切面编程(AspectCore AOP)
    ORA-04044:此处不允许过程、函数、程序包或类型,系统分析与解决
    (经典dp) I型 L型 铺盖2*n
  • 原文地址:https://blog.csdn.net/m0_64996150/article/details/126608683