《书生大模型实战营第3期》入门岛 学习笔记与作业:Git 基础知识

news2024/11/27 3:57:17

文章大纲

  • Git 是什么?-- 分布式版本控制系统
    • 版本控制系统简介
    • Git 基本概念
    • 1. 安装 Git
      • 1.1 Windows 系统
      • 1.2 Linux 系统
    • 2. Git 托管平台
    • 3. 常用 Git 操作
    • 4. tips
      • 4.1 全局设置 vs. 本地设置
      • 4.2 如何配置
      • 4.3 验证设置
      • 4.4 Git 四步曲
    • 5. 常用插件
    • 6. 常规开发流程
  • 作业
  • 其他学习内容
  • 参考文献
    • 本人学习系列笔记
      • 第二期
      • 第三期
    • 课程资源
    • 论文
    • 其他参考


Git 是什么?-- 分布式版本控制系统

Git 是一种开源的分布式版本控制系统,广泛应用于软件开发领域,尤其是在协同工作环境中。

它为程序员提供了一套必备的工具,使得团队成员能够有效地管理和跟踪代码的历史变更。下面是 Git 的主要功能和作用的规范描述:

官网:https://git-scm.com/

官方文档:Git - Book

Git 基础:Git 基础知识

版本控制系统简介

在这里插入图片描述
使用版本控制的优点
实现跨区域多人协同开发
追踪和记载一个或者多个文件的历史记录
组织和保护你的源代码和文档
统计工作量
并行开发、提高开发效率
跟踪记录整个软件的开发过程
减轻开发人员的负担,节省时间,同时降低人为错误

在这里插入图片描述

Git 基本概念

工作区、暂存区和 Git 仓库区

  • 工作区(Working Directory):
    当我们在本地创建一个 Git 项目,或者从 GitHub 上 clone 代码到本地后,项目所在的这个目录就是“工作区”。这里是我们对项目文件进行编辑和使用的地方。

  • 暂存区(Staging Area):
    暂存区是 Git 中独有的一个概念,位于 .git 目录中的一个索引文件,记录了下一次提交时将要存入仓库区的文件列表信息。使用 git add 指令可以将工作区的改动放入暂存区。

  • 仓库区 / 本地仓库(Repository):
    在项目目录中,.git 隐藏目录不属于工作区,而是 Git 的版本仓库。这个仓库区包含了所有历史版本的完整信息,是 Git 项目的“本体”。

文件状态
文件在 Git 工作区中的状态可以是:

  • 已跟踪:文件已被纳入版本控制,根据其是否被修改,可以进一步分为未修改(Unmodified)、已修改(Modified)或已暂存(Staged)。
  • 未跟踪:文件存在于工作目录中,但还没被纳入版本控制,也未处于暂存状态。

分支
分支是 Git 的一大特性,支持轻量级的分支创建和切换。Git 鼓励频繁使用分支和合并,使得并行开发和错误修正更为高效。

主要功能

  • 代码历史记录跟踪

    Git 记录每一次代码提交,允许用户查看项目的历史版本和变更记录,从而理解每个阶段的开发细节。

  • 团队协作

    支持多人同时对同一项目工作,提供了合并、分支和版本控制的功能,以确保多人协作的效率和代码的整合性。

  • 变更审查

    允许开发者查看代码变更的具体内容,了解谁在何时做了哪些修改,这对于代码审查和质量控制至关重要。

  • 实现机制

特性描述
分布式架构与集中式版本控制系统不同,Git 在每个开发者的机器上都存有完整的代码库副本,包括完整的历史记录。这种分布式的特性增强了数据的安全性和获取效率。
分支管理Git 的分支管理功能非常灵活,支持无缝切换到不同的开发线路(分支),并允许独立开发、测试新功能,最终通过合并操作将这些功能稳定地集成到主项目中。
快照系统Git 通过快照而非差异比较来管理数据。每次提交更新时,Git 实际上是在存储一个项目所有文件的快照。如果文件没有变化,Git 只是简单地链接到之前存储的文件快照。

1. 安装 Git

1.1 Windows 系统

  1. 下载并安装适合您 Windows 版本的安装程序:下载地址
  2. 按照安装向导完成安装。
  3. 打开终端(win+r→cmd),输入指令 git --version 检查是否安装成功。

1.2 Linux 系统

  1. 通过包管理器安装 Git:
    sudo apt update
    sudo apt install git
    
  2. 输入指令 git --version 检查安装版本。

2. Git 托管平台

GitHub

  • 是全球最大的代码托管平台之一,拥有丰富的开源项目和活跃的开发者社区。它提供了版本控制、项目管理、协作开发等功能,并支持多种编程语言。

GitLab

  • 一个自托管或基于云的平台,提供了完整的 DevOps 工具链,包括代码托管、持续集成/持续部署(CI/CD)、问题跟踪等。

Gitee

  • 国内的代码托管平台,提供了代码托管、项目管理、协作开发等功能,对国内开发者来说,访问速度可能更快,也更符合国内的使用习惯。

Github 需要魔法,可以选择自行选择使用。

3. 常用 Git 操作

基础指令

指令描述
git config配置用户信息和偏好设置
git init初始化一个新的 Git 仓库
git clone克隆一个远程仓库到本地
git status查看仓库当前的状态,显示有变更的文件
git add将文件更改添加到暂存区
git commit提交暂存区到仓库区
git branch列出、创建或删除分支
git checkout切换分支或恢复工作树文件
git merge合并两个或更多的开发历史
git pull从另一仓库获取并合并本地的版本
git push更新远程引用和相关的对象
git remote管理跟踪远程仓库的命令
git fetch从远程仓库获取数据到本地仓库,但不自动合并

进阶指令

指令描述
git stash暂存当前工作目录的修改,以便可以切换分支
git cherry-pick选择一个提交,将其作为新的提交引入
git rebase将提交从一个分支移动到另一个分支
git reset重设当前 HEAD 到指定状态,可选修改工作区和暂存区
git revert通过创建一个新的提交来撤销之前的提交
git mv移动或重命名一个文件、目录或符号链接,并自动更新索引
git rm从工作区和索引中删除文件

每个指令都有其特定的用途和场景,详细的使用方法和参数可以通过命令行的帮助文档(git command -h,例如 git pull -h)来获取更多信息。


4. tips

4.1 全局设置 vs. 本地设置

  • 全局设置:这些设置影响你在该系统上所有没有明确指定其他用户名和电子邮件的 Git 仓库。这是设置默认用户名和电子邮件的好方法。
  • 本地设置:这些设置仅适用于特定的 Git 仓库。这对于你需要在不同项目中使用不同身份时很有用,例如区分个人和工作项目。

4.2 如何配置

  1. 全局设置用户信息
    打开终端或命令提示符,并输入以下命令来设置全局用户名和电子邮件地址:

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

    这里的 "Your Name""your.email@example.com" 应替换为你自己的姓名和电子邮件。

  2. 本地设置用户信息
    首先,确保你当前处于你想要配置的 Git 仓库的目录中。然后,输入以下命令来仅为该仓库设置用户名和电子邮件地址:

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

    同样,替换 "Your Name""your.email@example.com" 为该特定项目中使用的姓名和电子邮件。

4.3 验证设置

在设置完用户信息后,你可能想要验证这些设置以确保它们被正确应用。

  • 查看全局配置

    git config --global --list
    
  • 查看仓库配置

    git config --local --list
    
  • 查看特定配置项

    git config user.name
    git config user.email
    

4.4 Git 四步曲

在Git的日常使用中,下面四步曲是常用的流程,尤其是在团队协作环境中。

添(Add)

  • 命令git add <文件名>git add .
  • 作用:将修改过的文件添加到本地暂存区(Staging Area)。这一步是准备阶段,你可以选择性地添加文件,决定哪些修改应该被包括在即将进行的提交中。

提(Commit)

  • 命令git commit -m '描述信息'
  • 作用:将暂存区中的更改提交到本地仓库。这一步是将你的更改正式记录下来,每次提交都应附带一个清晰的描述信息,说明这次提交的目的或所解决的问题。

拉(Pull)

  • 命令git pull
  • 作用:从远程仓库拉取最新的内容到本地仓库,并自动尝试合并到当前分支。这一步是同步的重要环节,确保你的工作基于最新的项目状态进行。在多人协作中,定期拉取可以避免将来的合并冲突。

推(Push)

  • 命令git push
  • 作用:将本地仓库的更改推送到远程仓库。这一步是共享你的工作成果,让团队成员看到你的贡献。

帮助团队成员有效地管理和同步代码,避免工作冲突,确保项目的顺利进行。正确地使用这些命令可以极大地提高开发效率和协作质量。

5. 常用插件

  • GitLens: 在代码行上显示 Git 提交信息。
  • Git Graph: 类似于 SourceTree 的可视化版本控制插件。
  • Git History: Git 日志查看器。

仅演示常规使用,其他优点,大家可以自行挖掘。

  • GitLens:

  • Git Graph:

  • Git History:

6. 常规开发流程

  • Fork 目标项目

目标项目链接

  • 获取仓库链接
git clone https://github.com/MrCatAI/Tutorial.git # 修改为自己frok的仓库
cd Tutorial/
git branch -a
git checkout -b camp3 origin/camp3
  • 查看分支

  • 切换到第三期的分支

  • 查看分支内容

git checkout -b camp3_577 # 自定义一个新的分支

示例:

示例文件路径

./data/Git/task/camp3_id.md
  • 创建自己的破冰文件
touch ./data/Git/task/camp3_557.md # 修改为自己的问卷ID
  • 提交更改到分支
git add .
git commit -m "add git_557_introduction" # 提交信息记录
git push origin camp3_577

(大家提交使用英文,避免仓库同步错误)

注:初始化时可能需要创建对应的 token:(示例,可根据实际提示完成)

查看提交

在 github 页面将修改的内容 PR 到 Tutorial

按要求编写 title

git_557_introduction # 请统一 git_<id>_introduction 格式,方便审核

下面可以查看修改的内容

PR 示例链接:https://github.com/InternLM/Tutorial/pull/790

也可以合并到自己的仓库

自己的仓库,可以自行 merge,作业提交到 Tutorial 需要维护者审核。


作业

  • https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Git/task.md

在这里插入图片描述
咱们国家的实战营,就不要用外国的扯犊子服务了,完了阿美莉卡把这扯犊子网站一关,还学个p 啊。

解决方案:

  • https://stackoverflow.com/questions/23885449/unable-to-resolve-unable-to-get-local-issuer-certificate-using-git-on-windows

git config --global http.sslbackend schannel

在这里插入图片描述

【大家可以叫我】:shiter
【坐标】:陕西
【专业/职业】:大数据AI工程师
【兴趣爱好】: 游泳
【项目技能】cv
【组队情况】无
【本课程学习基础】:不太会
【本期活动目标】:做个领域问答机器人

由于我家网络,系统,git 还开了两阶段认证,所以用gui 登录 提交一下
在这里插入图片描述
在这里插入图片描述

之前公司当项目经理时候也这么操作过,有点忘了。

在这里插入图片描述

提交的PR

  • https://github.com/InternLM/Tutorial/pull/1230
    在这里插入图片描述

我创建的仓库:

  • https://gitee.com/wangyaning/camp3
  • https://github.com/wynshiter/camp3Tutorial

其他学习内容

什么是 Git 版本控制工程化 最佳实践

  • Docker+Harbor+Jenkins+Gitlab自动化CICD构建

参考文献

大模型实战营 地址

  • https://openxlab.org.cn/models/InternLM/subject

本人学习系列笔记

第二期

  • 《书生·浦语大模型实战营》第1课 学习笔记:书生·浦语大模型全链路开源体系
  • 《书生·浦语大模型实战营》第2课 学习笔记:轻松玩转书生·浦语大模型趣味 Demo
  • 《书生·浦语大模型实战营》第3课 学习笔记:搭建你的 RAG 智能助理(茴香豆)
  • 《书生·浦语大模型实战营》第4课 学习笔记:XTuner 微调 LLM:1.8B、多模态、Agent
  • 《书生·浦语大模型实战营》第5课 学习笔记:LMDeploy 量化部署 LLM 实践
  • 《书生·浦语大模型实战营》第6课 学习笔记:Lagent & AgentLego 智能体应用搭建
  • 《书生·浦语大模型实战营》第7课 学习笔记:OpenCompass 大模型评测实战

第三期

入门岛

  • 《书生大模型实战营第3期》入门岛 学习笔记与作业:Linux 基础知识

课程资源

第三期 学院闯关手册

  • https://aicarrier.feishu.cn/wiki/XBO6wpQcSibO1okrChhcBkQjnsf

第三期 作业提交

  • https://aicarrier.feishu.cn/share/base/form/shrcnZ4bQ4YmhEtMtnKxZUcf1vd

第二期 学员手册

  • https://aicarrier.feishu.cn/wiki/KamPwGy0SiArQbklScZcSpVNnTb

算力平台

  • https://studio.intern-ai.org.cn/console/dashboard
  • https://studio.intern-ai.org.cn/

课程文档

  • https://github.com/InternLM/Tutorial/tree/camp2

课程视频

  • https://www.bilibili.com/video/BV15m421j78d

代码仓库

  • https://github.com/InternLM/Tutorial/tree/camp2

优秀项目展示与学习

  • https://aicarrier.feishu.cn/wiki/DoKWwqslwiyjjKkHhqJcvXAZnwd?table=tblyxy5MZV7gJ7yS&view=vew0rj0WuN

论文

其他参考

原始文档

https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Linux/readme.md

本人博客:

  • 基于大语言模型的本地知识库问答系统构建方案

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

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

相关文章

leetcode hot100 (面试复习用)

数组 最大子数组和 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 示例&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4]输出&#xff1a;6解释&#xff1…

《算法笔记》总结No.9——高效配招

一.打表 一种经典的空间换时间方式&#xff1a;即将所有可能用到的结果实现计算出来&#xff0c;这样后面用到的时候直接可以查表获得。具体来说有3种方式&#xff1a; 1.计算所有结果 这个是最常用到的用法&#xff0c;例如在一个需要查询大量Fibonacci数F(n)的问题中&#x…

分布式Apollo配置中心搭建实战

文章目录 环境要求第一步、软件下载第二步、创建数据库参考文档 最近新项目启动&#xff0c;采用Apollo作为分布式的配置中心&#xff0c;在本地搭建huanj 实现原理图如下所示。 环境要求 Java版本要求&#xff1a;JDK1.8 MySql版本要求&#xff1a;5.6.5 Apollo版本要求&…

kettle从入门到精通 第七十九课 ETL之kettle kettle读取数据库BLOB字段转换为文件

上一课我们讲解了如何将文件以二进制流的方式写入数据库&#xff0c;本节课我们一起学习下如何将二进制数据读取为文件。 1、将二进制流转换为文件这里主要用到了步骤【文本文件输出】。表输入步骤从表中读取blob字段&#xff0c;java代码定义二进制流转换为文件的全路径&#…

微星主板 B450M 设置 Legacy 启动模式

问题来源 我安装阵列卡需要Legacy启动模式 主板设置 微星主板BIOS不熟悉&#xff0c;找了好久。 在 BIOS -> Setting -> Advanced -> Windows OS Configuaration 中把 BIOS CSM/UEFI Mode 设置成 CSM 模式 在 Setting -> Boot 中把 Boot mode select 改成带 “L…

在 CI/CD Pipeline 中实施持续测试的最佳实践!

随着软件开发周期的不断加快&#xff0c;持续集成&#xff08;CI&#xff09;和持续交付/部署&#xff08;CD&#xff09;已经成为现代软件开发的重要组成部分。在这一过程中&#xff0c;持续测试的实施对于确保代码质量、提高发布效率至关重要。本文将详细介绍在CI/CD流水线中…

mac数据恢复软件哪个好用 macbook数据恢复专业软件下载 mac数据恢复概率大吗 苹果电脑数据恢复软件哪个好

作为办公的必需品&#xff0c;mac的普及率虽然比不上其他品牌的windows操作系统&#xff0c;但是使用人群也一致居高不下&#xff0c;因此&#xff0c;mac数据丢失的问题也时常发生。当数据丢失以后&#xff0c;如何找回数据成了一大难题。 一、Mac数据恢复概率大吗 一般情况下…

NSSCTF-Web题目25(RCE-构造变量)

目录 [CISCN 2019初赛]Love Math 1、题目 2、知识点 3、思路 [SWPUCTF 2023 秋季新生赛]If_else 1、题目 2、知识点 3、思路 [CISCN 2019初赛]Love Math 1、题目 2、知识点 构造变量&#xff0c;进制转换、函数利用 3、思路 打开题目&#xff0c;出现源码 代码的意思…

Xcode学习笔记

Xcode学习笔记 前言一、在Mac上安装Xcode并做点简单设置1.查看一下Xcode的版本 二、使用Xcode新建一个Playground三、swift基础-变量1.swift是什么2.变量是什么3.建立变量4.改变变量5.小帖士 四、swift基础-变量命名规范1.使用小驼峰命名法2.使用有意义且描述性的名称3.避免使用…

03 Maven基础 MyBatis

文章目录 Maven1、Maven简介2、Maven基本使用3、 IDEA使用Maven4 、依赖管理 MyBatis1、Mybatis概述2、Mybatis快速入门3、Mapper代理开发4、核心配置文件6、配置文件实现CRUD7、注解实现CRUD Maven 1、Maven简介 Maven是专门用于管理和构建Java项目的工具 &#xff08;1&…

笔记:现代卷积神经网络之AlexNet

本文为李沐老师《动手学深度学习》笔记小结&#xff0c;用于个人复习并记录学习历程&#xff0c;适用于初学者 模型介绍 2012年&#xff0c;AlexNet横空出世。它首次证明了学习到的特征可以超越手工设计的特征。它一举打破了计算机视觉研究的现状。 AlexNet使用了8层卷积神经…

【C#】| 与 及其相关例子

按位或&#xff08;|&#xff09; 按位或运算符 | 对两个数的每一位进行比较&#xff0c;如果两个数中至少有一个为 1&#xff0c;则结果位为 1&#xff1b;否则&#xff0c;结果位为0。 1010 (10 in decimal) | 1100 (12 in decimal) ------1110 (14 in decimal) 力扣相关…

几种常用排序算法

1 基本概念 排序是处理数据的一种最常见的操作&#xff0c;所谓排序就是将数据按某字段规律排列&#xff0c;所谓的字段就是数据节点的其中一个属性。比如一个班级的学生&#xff0c;其字段就有学号、姓名、班级、分数等等&#xff0c;我们既可以针对学号排序&#xff0c;也可…

【开源库】libodb库编译及使用

前言 本文介绍windows平台下libodb库的编译及使用。 文末提供libodb-2.4.0编译好的msvc2019_64版本&#xff0c;可直接跳转自取 ODB库学习相关 【开源库学习】libodb库学习&#xff08;一&#xff09; 【开源库学习】libodb库学习&#xff08;二&#xff09; 【开源库学习】…

K8S 部署jaeger-operator,与其演示项目hotrod

最近在研究observabilty在K8S环境的onboard&#xff0c;查阅了一些资料&#xff0c;发现现在网上Prometheus/Metrics相关的资源&#xff0c;是比较全面的&#xff0c;而Trace相关的部分不是很全面&#xff0c;所以写下这篇博文&#xff0c;以做备忘和分享。 组件介绍 我这里选…

C++面试题之判断一个变量是不是指针

对于变量其实对应的就是内存&#xff0c;而内存并没有表明一定是什么数据类型&#xff0c;所以判断变量是否是一个指针其实是一个参数类型匹配问题&#xff0c;在C中支持函数的重载&#xff0c;那么不同的函数因为参数的不同从而匹配不同函数调用过程。 编译器在进行函数匹配调…

格密码基础

目录 写在前面 一. 格上基本向量 二. 封闭球内格点数 三. 半稳定格 四. Chernoff-Hoeffding 界 五. 格密码中常用的细节 六. 可证明安全的格基 6.1 引入问题 6.2 格基选取 6.3 流程性小结 写在前面 本文章主要介绍格密码中所使用的一些基本概念&#xff0c;其中包括…

SVN分支管理基本原理

原文全文详见个人博客&#xff1a; SVN分支管理基本原理学习完svn和git的版本管理理念上的差异后&#xff0c;自然的我们再进一步对比svn和git在分支管理上的原理差异&#xff0c;这种差异正是由二者版本管理理念和存储方式差异造成的&#xff0c;今天我们先研究一下svn的分支…

Python爬虫(基本流程)

1. 确定目标和范围 明确需求&#xff1a;确定你需要从哪些网站抓取哪些数据。合法性&#xff1a;检查目标网站的robots.txt文件&#xff0c;了解哪些内容可以被抓取。数据范围&#xff1a;确定爬取数据的起始和结束点&#xff0c;比如时间范围、页面数量等。 2. 选择合适的工…

展望未来:利用【Python】结合【机器学习】强化数据处理能力

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 一、引言二、数据清洗与预处理三、特征工程四、数据可视化五、模型训练与评估六、模型部署与优化七、总结 在数据驱动的时代&#xff0c;数据处理与机器学习技术的结合已成为推动业务增长和创新的关键…