上云管理之Git/GitHub/GitLab 详解(一)

上云管理之Git/GitHub/GitLab 详解(一)

  • 引言
  • 1. GIT软件安装
  • 2.初始化配置与提交代码
    • 2.1. 初始化配置
    • 2.2 本地仓库代码提交
      • 2.2.1 初始化仓库并提交代码
      • 2.2.2 再次提交已修改的代码
      • 2.2.3 文件夹层次结构代码提交
    • 2.3 GIT 的文件状态
  • 3.GIT 分支
    • 3.1. 分支的切换与删除
    • 3.2 合并分支
      • 3.2.1 Fast forward 合并
      • 3.2.2 3 way merge 合并
      • 3.2.2 3 way merge with conflict 合并
      • 3.2.2 4 rebase 合并

引言

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。本课程主要包含Git的基础知识和GitHub、GItLab的使用,课程涵盖Git底层原理,通过详细的讲解两款产品的特性。
Git是一个开源的分布式版本控制系统,由Linus Torvalds开发。Git是当前世界上最流行的版本控制系统之一,被广泛用于软件开发过程中的源代码管理。

特点

  1. 分布式架构:Git的每个开发者都拥有完整的代码仓库副本,包括标签、分支和标签。

  2. 非线性开发:支持快速切换分支,方便开发者并行开发。

  3. 离线提交:支持离线提交和合并,不需要持续联网。

  4. 灵活的工作流:支持多种工作流,可以灵活地管理开发流程。

  5. 离线合并:可以离线合并分支,然后一次性合并到主分支。

  6. 轻量级:Git是轻量级的,易于学习和使用。

  7. 可扩展性:Git有许多插件和工具支持,可以扩展其功能。
    基本概念

  8. 仓库(epository):Git仓库是Git用来管理项目的地方,包含所有的文件和历史记录。

  9. 分支(ranch):分支是Git中开发线,可以创建多个分支并行开发。

  10. 提交(ommit):提交是将更改保存到仓库。

  11. 合并(erge):合并两个或多个分支的更改。

  12. 标签(ag):标签是给特定的提交打上标记,通常用于版本发布版本。

  13. 远程仓库(emote):远程仓库是托管在服务器上的仓库,可以与其他人共享和协作。

基本操作

  1. 初始化仓库git init创建新的Git仓库。
  2. 添加文件git add添加文件到暂存区。
  3. 提交更改git commit提交暂存区的更改。
  4. 查看状态git status查看当前仓库状态。
  5. 查看历史git log查看提交历史记录。
  6. 检出文件git checkout检出文件到工作区。
  7. 创建分支git branch创建新分支。
  8. 切换分支git checkout切换分支。
  9. 合并分支git merge合并分支。
  10. 删除分支git branch -d删除分支。
  11. 克隆仓库git clone克隆远程仓库到本地。
  12. 推送更改git push推送更改到远程仓库。
  13. 拉取更改git pull拉取远程仓库的更改。

工作流程

  1. 创建仓库git initgit clone
  2. 开发新功能:创建新分支并开发。
  3. 提交更改git addgit commit
  4. 合并分支git merge合并分支。
  5. 推送更改git push推送到远程仓库。
  6. 拉取更改git pull拉取远程更改。
  7. 解决冲突:合并时解决冲突。
  8. 删除分支git branch -d删除分支。

Git是现代软件开发中不可或缺的工具,它提供了强大的版本控制功能,使得团队协作和代码管理变得容易。通过Git,开发者可以高效地管理代码,跟踪更改,并与团队成员共享和协作。

1. GIT软件安装

点击链接 git下载地址

在这里插入图片描述

点击下载 代码编辑器vscode下载地址
在这里插入图片描述
新建立一个文件夹git_test,在windows 自带的powershell 中打开vscode;

PS D:\> cd git_test
PS D:\git_test> code .

在扩展区安装git插件,安装git的两个插件,如果搜索不到则更新vscode至最新版;
在这里插入图片描述
在这里插入图片描述

2.初始化配置与提交代码

2.1. 初始化配置

在使用Git进行版本控制之前,通常需要配置用户信息,以便在提交时能够正确地记录更改的作者。配置用户信息可以通过以下命令完成:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

这里的Your Nameyour.email@example.com应该替换为实际的用户姓名和电子邮件地址。配置这些信息后,每次提交(commit)都会使用这些信息。

  1. 配置用户名
    使用user.name配置项来配置用户名,这个名称将显示在提交历史中。

    git config --global user.name "John Doe"
    
  2. 配置用户邮箱
    使用user.email配置项来配置用户的电子邮件地址,这个地址将用于提交历史中识别提交者。

    git config --global user.email "john.doe@example.com"
    
  3. 全局配置
    使用--global选项来配置全局配置,这意味着配置将应用于当前用户在所有Git仓库。

  4. 应用范围

    • 全局配置:配置影响当前用户在所有Git仓库。
    • 本地配置:只影响当前仓库。
  5. 修改配置
    如果需要修改已经配置的用户信息,可以使用以下命令:

    git config --global user.name "New Name"
    git config --global user.email "new.email@example.com"
    
  6. 查看配置
    查看当前配置的信息,可以使用以下命令:

    git config --global --list
    
  7. 删除配置
    如果需要删除某个配置项,可以使用以下命令:

    git config --global --unset user.name
    git config --global --unset user.email
    
  8. 配置文件
    Git的配置信息存储在用户主目录下的.gitconfig文件中。

2.2 本地仓库代码提交

2.2.1 初始化仓库并提交代码

  1. 初始化仓库,之后本地仓库中会生成.git 文件
    在这里插入图片描述

在这里插入图片描述
2. 新建一个hello.txt 文件,并交由git管理,git 只存储文件的内容,不存储文件名,git会根据内容存储一个对象,对应的内容通过hash算法计算出一个hash值存储;

echo "hello">hello.txt
git add hello.txt
tree .git  查看结构
git status 查看git状态	

在这里插入图片描述

在这里插入图片描述
文件的名字在index目录下,可以通过以下函数查看

 git ls-files -s 查看索引区的文件名git cat-file -t 06oed3;查看对象的类型git cat-file -p 06oed3;查看对象的内容

在这里插入图片描述

3.提交代码至代码仓库,将索引库的代码提交至代码仓库
在这里插入图片描述

 git commit -m "lst commt";第一条记录进行提交

提交后会生成一个commit的对象,commit对象中的内容是tree对象已经相关提交者的信息,tree对象的内容是git add 的文件;
在这里插入图片描述

在这里插入图片描述

2.2.2 再次提交已修改的代码

假如实际需要修改已经commit的对象,使用vim 文件名进行操作 q 保存退出;之后重新提交,新提交的对象与前一次是一个父子关系

在这里插入图片描述

2.2.3 文件夹层次结构代码提交

新增文件夹,,新增文件夹不会生成新的待提交的内容,文件夹下有新文件,重新提交,会生成新的版本,三个版本的关系如下:

2.3 GIT 的文件状态

GIT的文件状态在工作区分为:untracked、modified,索引区的状态为staged,代码仓库中的状态为unmodified,这几个状态也可以相互转换。

git rm --cached  test.txt;从索引库中直接将add的文件删除
rm -rf test.txt;从工作区中直接将add的文件删除
git restore --staged text.txt ;索引区的代码版本回退到上一个版本;
git restore text.txt 工作区的代码回退到上一个版本;

在这里插入图片描述

3.GIT 分支

在Git中,分支(Branch)是一种允许开发者在开发新功能时,可以创建一个独立的开发线。分支,使得开发者可以并行开发不同的功能,而不会影响到主分支(通常是master或main)。

3.1. 分支的切换与删除

.git文件中的HEAD可以理解为是一个指针,它总是指向当前的工作分支和版本,可以使用cat .git/HEAD查看, 它里面报错了一个目录地址:例如:refs/heads/master,通过cat .git/refs/heads/master, 可以查看当前目录地址下的内容以及对应对象的类型。
在这里插入图片描述
GIT分支有相关的命令可以查看、创建等分支。

git branch 可以查看分支
* master
git log --oneline --decorate HEAD 查看当前HEAD指向的提交: 
d06dee4 (HEAD -> master) lst commit
git branch  branch_name  新建立分支
git branch -D  branch_name  删除分支,必须在工作分支删除另外一个分支,强制删除;
git branch -d  branch_name  删除分支前检查是否进行过合并,以防止删除未合并的分支;
git checkout branch_name  切换分支
git checkout -b new-branch-name  新建分支并切换到该分支
git checkout commit_name;git checkout -b branch_name;切换到特定commit对象上,新创建分支进行操作,可以恢复删除分支之后的动作;
git checkout hello.txt 索引区的文件会回退到工作区的内容
git branch -m <old_name><new_name> 为branch改名字;
git diff 工作区与索引区的区别
git diff --cached 索引区与代码仓库的区别

注意:分支删除后,在分支上提交的特定对象不会被删除,也就是在索引库中的对象不会被删除,这些对象称为垃圾对象。

3.2 合并分支

实际开发中是创建分支,修改代码后合并到master主分支,然后再通过master部署代码,方便分布式开发过程中,多人协同作业.
在这里插入图片描述
下载git图形化界面工具sourcetree

3.2.1 Fast forward 合并

通过HEAD的移动来完成branch 的合并,fast forward是最简单的分支合并,它的前提是假设合并前没有人曾经修改过master 的代码,以下为fast forward合并例子:

git checkout -b bugfit; 新建立分支
echo 'test'>test2.txt;新建立文件
git add test2.txt; 
git commit test2.txt;此时已经提交待代码仓库,当前的分支为bugfit
git checkout master;切换到主分支
git merge bugfit;合并分支
git reset ORIG_HEAD;回退合并分支

3.2.2 3 way merge 合并

正常协同开发的时候,不同的开发都拿到的是master的代码分支,修改代码后各个开发的分支为C3,C4,
, 这2个分支都是基于master的修改,假如C3在C4之前进行合并,那么C3合并的时候,代码就会发生差异,3 way merge 通过新生成一个commit,来达到合并的目的,如果C3和C4是修改的同一个文件,就需要借助人为来合并,到底取舍那一个。

3.2.2 3 way merge with conflict 合并

C3和C4是修改的同一个文件,就需要借助人为来合并,到底取舍那一个,t通过一下示例进行说明

ls
echo 'test'>test.txt
git add test.txt;
git commit -m '1th commit';在master上新建立的文件修改
git checkout -b bugfit;
vim test.txt;编辑该文件增加内容
add from bugfit;
git add  test.txt;
git commit -m '2th commit';在 bugfit 上新建文件并提交
git checkout master;切换到master分支
vim test.txt;
add form master;
git add test.txt;
git commit -m '3th commit';
git merge bugfit;合并分支
系统会提示冲突,需要人为手工修改冲突
修改之后再提交
git add test.txt
git commit;

在这里插入图片描述

3.2.2 4 rebase 合并

rebase,字面上的意思是“基地重建”,在 Git 中,它指的是将一系列提交转移到另一个基准之上。与合并(merge)不同,rebase 在整合多个分支的修改时,会创建新的提交历史

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/2677.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【UltraVNC】使用反向连接方式-部署私有远程工具(简版)

一、简要介绍 反向连接&#xff1a;客户电脑发起连接到维修工程师电脑。 场景&#xff1a;计算机A 无公网IP &#xff0c;计算机B无公网IP&#xff0c;AB直接进行远程的行为。 核心&#xff1a;借助中继方式 二、安装环境和安装包 中继器服务&#xff1a;linux系统安装包&…

技术分享 | 大语言模型赋能软件测试:开启智能软件安全新时代

在当今数字化时代&#xff0c;软件安全问题的严峻性日益凸显。随着网络攻击手段变得愈发复杂多样&#xff0c;切实保障软件系统的安全性已然成为开发者以及企业所面临的核心挑战。依据国际网络安全机构的相关报告&#xff0c;网络攻击事件的发生频率与复杂程度呈现出逐年递增的…

【图书管理与推荐系统】Python+Django网页界面+协同过滤推荐算法+网站系统

一、介绍 图书管理与推荐系统。使用Python作为主要开发语言。前端采用HTML、CSS、BootStrap等技术搭建界面结构&#xff0c;后端采用Django作为逻辑处理&#xff0c;通过Ajax等技术实现数据交互通信。在图书推荐方面使用经典的协同过滤算法作为推荐算法模块。主要功能有&#…

达梦asm创建磁盘组

达梦ASM磁盘组创建过程 安装dsc建库前需要配置asm磁盘组&#xff0c;通常编辑一个文件 vim /dm/dmdbms/config/create_asm_group.txt #asm script file create diskgroup ARCH asmdisk /dev/asmdisk/dsc_asm1 create diskgroup DATA asmdisk /dev/asmdisk/dsc_asm2 alter di…

Selenium常见问题解析

1、元素定位失败&#xff1a; 在使用Selenium自动化测试时&#xff0c;最常见的问题之一是无法正确地定位元素&#xff0c;这可能导致后续操作失败。解决方法包括使用不同的定位方式&#xff08;如xpath、CSS selector、id等&#xff09;&#xff0c;等待页面加载完全后再进行…

C++:set和map的使用

目录 序列式容器和关联式容器 set set类的介绍 构造和迭代器 增删查 insert find和erase erase迭代器失效 lower_bound与upper_bound multiset和set的区别 map map类的介绍 pair类型介绍 构造和迭代器 增删查 map数据修改&#xff1a;重载operator[] multimap…

达梦dsc环境dcr vote磁盘大小

达梦dsc环境中磁盘管理通过asm来实现&#xff0c;必须创建dcr和vote磁盘&#xff0c;那么这两个asm磁盘大小最小是多少&#xff1f; 32M asm文件最小为4个au&#xff0c;au大小为1M&#xff0c;因此asm文件最小为4M。但是创建vote时&#xff0c;命令只支持最小32M 通常生产环…

python操作MySQL以及SQL综合案例

1.基础使用 学习目标&#xff1a;掌握python执行SQL语句操作MySQL数据库软件 打开cmd下载安装 安装成功 connection就是一个类&#xff0c;conn类对象。 因为位置不知道&#xff0c;所以使用关键字传参。 表明我们可以正常连接到MySQL 演示、执行非查询性质的SQL语句 pytho…

鸿蒙进阶-AlphabetIndexer组件

大家好&#xff0c;这里是鸿蒙开天组&#xff0c;今天我们来学习AlphabetIndexer组件&#xff0c;喜欢就点点关注吧&#xff01; 通过 AlphabetIndexer 组件可以与容器组件结合&#xff0c;实现导航联动&#xff0c;以及快速定位的效果 核心用法 AlphabetIndexer不是容器组件…

Mac电脑技巧:适用于Mac的免费外置硬盘数据恢复软件

“我有一个 1 TB 的外置硬盘&#xff0c;它被意外格式化了。我尝试从中恢复丢失的数据。我把它连接到我的Mac&#xff0c;但里面什么也没找到。我正在寻找适用于Mac的免费外置硬盘数据恢复软件&#xff0c;例如奇客数据恢复Mac版或其他Mac数据恢复免费软件来扫描它并恢复数据。…

推荐一款高级的安装程序打包工具:Advanced Installer Architect

AdvanCEd Installer Architect是一款高级的安装程序打包工具&#xff0c;我们有时候可能用nsis用的多&#xff0c;Advanced Installer Architect也是一款打包工具&#xff0c;有兴趣的朋友也可以试试。有了Advanced Installer Architect你就可以创建MSI打包。 主要功能 *先进的…

LeetCode 热题100(七)【链表】(1)

7.链表 7.1相交链表&#xff08;简单&#xff09; 题目描述&#xff1a;leetcode链接 160.相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c…

OpenAI正在与台积电(TSMC)和博通(Broadcom)合作,打造自己的AI推理芯片

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

小新学习k8s第四天之发布管理

一、金丝雀发布&#xff08;灰度发布&#xff09; Deployment控制器支持自定义控制更新过程中的滚动节奏&#xff0c;如“暂停(pause)”或“继续(resume)”更新操作。 ①比如等待第一批新的Pod资源创建完成后立即暂停更新过程&#xff0c;此时&#xff0c;仅存在一部分新版本的…

大数据安全方案 验证

一、背景 文档用于记录配置 Kerberos 和 Ranger 后&#xff0c;对 HDFS、Hive 认证和鉴权的功能测试。 二、Kerberos 验证 2.1、验证功能 1&#xff0c;HDFS 认证 2.1.1、访问 HDFS Kerberos 验证前&#xff0c;访问 HDFS 失败。 Kerberos 验证后&#xff0c;访问 HDFS 成…

全面解析:云计算技术及其应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 全面解析&#xff1a;云计算技术及其应用 全面解析&#xff1a;云计算技术及其应用 全面解析&#xff1a;云计算技术及其应用 云…

规范:项目、目录、文件、样式、事件、变量、方法、url参数、注释、git提交 命名规范及考证

一、规范命名的重要性 易懂、通用、规范、标准、专业性、是经验积累的体现 1.1、常见命名方法 序号命名方法解释1全小写2全大写3驼峰&#xff1a;小驼峰命名法4驼峰&#xff1a;大驼峰命名法5烤串命名法 / 脊柱命名法6下划线分隔法 二、项目名 采用小写字母和中划线&#…

03-Dubbo的负载均衡及高性能RPC调用

03-Dubbo的负载均衡及高性能RPC调用 Dubbo 的负载均衡策略 负载均衡策略就是当某个服务压力比较大的时候&#xff0c;这时候部署多个节点同时提供相同的服务 当服务消费者来消费的时候&#xff0c;可以从这多个节点中选择一个节点进行消费&#xff0c;这个选择的过程&#xff0…

【LVGL-列表部件 lv_list_create】

LVGL-列表部件 lv_list_create ■ LVGL-列表部件-函数■ 修改样式-■ 修改样式- 背景色■ 修改样式- 改变项的颜色-label■ 修改样式- 改变项的颜色-btn ■ 事件(Event)■ 示例0&#xff1a;综合■ 示例1&#xff08;自动出现滚动&#xff09;■ 示例2&#xff08;滚动捕捉&…

【React】初学React

A. react中如何创建元素呢&#xff1f; 说明一点&#xff1a; 属性都改为驼峰形式&#xff08;无障碍属性aria-*除外&#xff09;&#xff0c; class改成className 创建元素 B. 变量或表达式如何表示呢&#xff1f;大括号{ }包起来 变量值用大括号包裹 C. 元素和组件的区别 元素…