当前位置: 首页 > news >正文

Git管理源代码、git简介,工作区、暂存区和仓库区,git远程仓库github,创建远程仓库、配置SSH,克隆项目

学习目标

  • 能够说出git的作用和管理源代码的特点
  • 能够如何创建git仓库并添加忽略文件
  • 能够使用add、commit、push、pull等命令实现源代码管理
  • 能够使用github远程仓库托管源代码
  • 能够说出代码冲突原因和解决办法
  • 能够说出 git 标签的作用
  • 能够使用使用git实现分支创建,合并操作

一、git简介

Git 是目前世界上最先进的分布式版本控制系统

作用:源代码管理,源代码管理方便多人协同开发和方便版本控制

Git的诞生

  • 作者是 Linux 之父:Linus Benedict Torvalds
  • 当初开发 Git 仅仅是为了辅助 Linux 内核的开发(管理源代码)

git 开发时间表

  • git 的产生是 Linux Torvals 在无奈被逼的情况下创造的,时间历程:
    • 2005 年 4 月3 日开始开发 git
    • 2005 年 4 月 6 日项目发布
    • 2005 年 4 月 7 日 Git 开始作为自身的版本控制工具
    • 2005 年 4 月 18 日发生第一个多分支合并
    • 2005 年 4 月 29 日 Git 的性能达到 Linux 预期
    • 2005年 7 月 26 日 Linux 功成身退,将 Git 维护权交给 Git 另一个主要贡献者 Junio C Hamano,直到现在

Git 迅速成为最流行的分布式版本控制系统,尤其是 2008 年,GitHub 网站上线了,它为开源项目免费提供 Git 存储,无数开源项目开始迁移至 GitHub,包括 jQuery,PHP,Ruby 等等

Git管理源代码特点

  • 1.Git是分布式管理.服务器和客户端都有版本控制能力,都能进行代码的提交、合并、...

  • 2.Git会在根目录下创建一个.git隐藏文件夹,作为本地代码仓库

  • Git操作流程图解

    Git服务器 --> 本地仓库 --> 客户端 --> 本地仓库 --> Git服务器

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

工作区

  • 对于添加修改删除文件的操作,都发生在工作区中

暂存区

  • 暂存区指将工作区中的操作完成小阶段的存储,是版本库的一部分

仓库区

  • 仓库区表示个人开发的一个小阶段的完成
    • 仓库区中记录的各版本是可以查看并回退的
    • 但是在暂存区的版本一旦提交就再也没有了

三、Git单人本地仓库操作

  • 课程目标:学习常用的Git终端命令
  • 提示:本地仓库是个.git隐藏文件

以下为演示Git单人本地仓库操作

  • 1.git安装,已安装

  • 2.查看git安装结果

      git
    
  • 3.创建项目

    • 创建test文件夹,表示是工作项目

      E:\downloads\study\FL_code\GitStudy\test

4.创建本地仓库

  1. 进入到test,并创建本地仓库.git
  2. 新创建的本地仓库.git是个空仓库

      cd testgit init

3.创建本地仓库.git

5.配置个人信息

 git config user.name '张三'git config user.email 'zhangsan@qq.com'

6.新建py文件

  • 在项目文件test里面创建login.py文件,用于版本控制演示

7.查看文件状态

  • 红色表示新建文件或者新修改的文件,都在工作区.
  • 绿色表示文件在暂存区
  • 新建的login.py文件在工作区,需要添加到暂存区并提交到仓库区

    git status
    

8.将工作区文件添加到暂存区

  # 添加项目中所有文件git add .或者# 添加指定文件git add login.py

9.将暂存区文件提交到仓库区

  • commit会生成一条版本记录
  • -m后面是版本描述信息

    git commit -m '版本描述'

10.接下来就可以在login.py文件中编辑代码

  • 代码编辑完成后即可进行addcommit操作
  • 提示:添加和提交合并命令

      git commit -am "版本描述"
    
  • 提交两次代码,会有两个版本记录

11.查看历史版本

  git log或者git reflog

git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,git log 则不能察看已经删除了的commit记录

12.回退版本

  • 方案一:

    • HEAD表示当前最新版本
    • HEAD^表示当前最新版本的前一个版本
    • HEAD^^表示当前最新版本的前两个版本,以此类推...
    • HEAD~1表示当前最新版本的前一个版本
    • HEAD~10表示当前最新版本的前10个版本,以此类推...

      git reset --hard HEAD^

 

方案二:当版本非常多时可选择的方案

  • 通过每个版本的版本号回退到指定版本

      git reset --hard 版本号

13.撤销修改

  • 只能撤销工作区、暂存区的代码,不能撤销仓库区的代码
  • 撤销仓库区的代码就相当于回退版本操作

    • 撤销工作区代码

      • 新加代码num3 = 30,不add到暂存区,保留在工作区

        git checkout 文件名

撤销暂存区代码

  • 新加代码num3 = 30,并add到暂存区

    # 第一步:将暂存区代码撤销到工作区
    git reset HEAD  文件名
    # 第二步:撤销工作区代码
    git checkout 文件名

四、Git远程仓库Github

提示:Github网站作为远程代码仓库时的操作和本地代码仓库一样的,只是仓库位置不同而已!

  • 准备Git源代码仓库 https://github.com/
  • 准备经理的文件 Desktop/manager/
  • 准备张三的文件 Desktop/zhangsan/

4.1 创建远程仓库

以下操作为演示在Github网站上创建远程仓库

  • 1.登陆注册Github

  • 2.创建仓库入口

  • 3.编辑仓库信息

  • 4.仓库创建完成

5.查看仓库地址

4.2 配置SSH

选择SSH操作

  • 如果某台电脑需要与Github上的仓库交互,那么就要把这台电脑的SSH公钥添加到这个Github账户上

  • 1.配置SSH公钥入口

2.生成SSH公钥

  ssh-keygen -t rsa -C "xiongsqiang@qq.com"

  • 3.配置SSH公钥

  • 补充:删除旧的秘钥

    • 删除~/.ssh目录,这里存储了旧的密钥
      rm -r .ssh

SSH操作报错

解决方案为

eval "$(ssh-agent -s)"

ssh-add

4.3 克隆项目

  • 准备经理的文件E:\downloads\study\FL_code\GitStudy\manager
  • 准备张三的文件 E:\downloads\study\FL_code\GitStudy\zhangsan
经理的工作
  • 立项:克隆远程仓库+配置身份信息+创建项目+推送项目到远程仓库

  • 1.克隆远程仓库的命令

      cd E:\downloads\study\FL_code\GitStudy\managergit clone git@github.com:xsq13579/info.git
    
  • 2.克隆远程仓库到本地

3.克隆成功后查看经理的文件

4.配置经理身份信息

  cd E:\downloads\study\FL_code\GitStudy\manager\infogit config user.name '经理'git config user.email 'xiongsqiang@qq.com'

5.创建项目

创建项目文件,里面有login.py文件

  • 6.推送项目到远程仓库

      # 工作区添加到暂存区git add .# 暂存区提交到仓库区git commit -m '立项'# 推送到远程仓库git push

  • 在 push 的时候需要设置账号与密码,该密码则是 github 的账号与密码

    • 如果在每次 push 都需要设置账号与密码,那么可以设置记住密码

      设置记住密码(默认15分钟):
      git config --global credential.helper cache
      如果想自己设置时间,可以这样做(1小时后失效):
      git config credential.helper 'cache --timeout=3600'
      长期存储密码:
      git config --global credential.helper store
      

      在以后的项目开发过程中,Pycharm 可以自动记住密码

张三的工作
  • 获取项目:克隆项目到本地、配置身份信息

  • 1.克隆项目到本地

      cd E:\downloads\study\FL_code\GitStudy\zhangsangit clone https://github.com/xsq13579/info.git

2.克隆成功后查看张三的文件

  • 3.配置张三身份信息

      cd E:\downloads\study\FL_code\GitStudy\zhangsan\infogit config user.name '张三'git config user.email 'xiongsqiang@qq.com'
    

张三身份信息配置成功后即可跟经理协同开发同一个项目


学习导航:http://www.xqnav.top 

相关文章:

Git管理源代码、git简介,工作区、暂存区和仓库区,git远程仓库github,创建远程仓库、配置SSH,克隆项目

学习目标 能够说出git的作用和管理源代码的特点能够如何创建git仓库并添加忽略文件能够使用add、commit、push、pull等命令实现源代码管理能够使用github远程仓库托管源代码能够说出代码冲突原因和解决办法能够说出 git 标签的作用能够使用使用git实现分支创建,合并…...

【机器学习】机器学习与时间序列分析的融合应用与性能优化新探索

文章目录 引言第一章:机器学习在时间序列分析中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 数据增强 1.2 模型选择1.2.1 自回归模型1.2.2 移动平均模型1.2.3 长短期记忆网络1.2.4 卷积神经网络 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 A…...

执行力不足是因为选择模糊

选择模糊:执行力不足的根源 选择模糊是指在面对多个选项时,缺乏明确的目标和方向。这种模糊感会导致犹豫不决,进而影响我们的执行力。 选择模糊的表现: 目标不明确,不知道应该做什么。优先级混乱,不清楚…...

力扣 225题 用队列实现栈 记录

题目描述 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素…...

中英双语介绍意大利(Italy):有哪些著名景点、出名品牌?

中文版 意大利概述 意大利,位于欧洲南部,是一个以其悠久的历史、丰富的文化遗产和美丽的自然风光而闻名的国家。意大利不仅是文艺复兴的发源地,还拥有众多世界著名的城市、景点和品牌。 著名城市 罗马(Rome)&#x…...

Python【打包exe文件两步到位】

Python打包Exe 安装 pyinstaller(pip install pyinstaller) 执行打包命令(pyinstaller demo.py) 打完包会生成 dist 文件夹,如下如...

基于模型预测控制的PMSM系统速度环控制理论推导及仿真搭建

模型预测控制(Model Predictive Control, MPC)是一种先进的控制策略,广泛应用于工业控制中。它可以看作是一种最优控制方法,利用对象的动态模型来预测其状态的未来行为,并根据每个采样时间点特定性能目标函数的优化来确…...

【PYG】GNN和全连接层(FC)分别在不同的类中,使用反向传播联合训练,实现端到端的训练过程

文章目录 基本步骤GNN和全连接层(FC)联合训练1. 定义GNN模型类2. 定义FC模型类3. 训练循环中的联合优化解释完整代码 GNN和全连接层(FC)分别使用不同的优化器和学习率分别进行参数更新解释 基本步骤 要从GNN(图神经网…...

vue3使用方式汇总

1、引入iconfont阿里图库图标: 1.1 进入阿里图标网站: iconfont阿里:https://www.iconfont.cn/ 1.2 添加图标: 1.3 下载代码: 1.4 在vue3中配置代码: 将其代码复制到src/assets/fonts/目录下&#xff1…...

Turborepo简易教程

参考官网:https://turbo.build/repo/docs 开始 安装全新的项目 pnpm dlx create-turbolatest测试应用包含: 两个可部署的应用三个共享库 运行: pnpm install pnpm dev会启动两个应用web(http://localhost:3000/)、docs(http://localhost…...

初中物理知识点总结(人教版)

初中物理知识点大全 声现象知识归纳 1 .声音的发生:由物体的振动而产生。振动停止,发声也停止。 2.声音的传播:声音靠介质传播。真空不能传声。通常我们听到的声音是靠空气传来的。 3.声速:在空气中传播速度是:340…...

ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建等高级进阶

目录 第一章 ChatGPT-4o使用进阶 第二章 大语言模型原理详解 第三章 大语言模型优化 第四章 开源大语言模型及本地部署 第五章 从0到1搭建第一个大语言模型 第六章 智能体(Agent)构建 第七章 大语言模型发展趋势 第八章 总结与答疑讨论 更多应用…...

【开源项目】LocalSend 局域网文件传输工具

【开源项目】LocalSend 局域网文件传输工具 一个免费、开源、跨平台的局域网传输工具 LocalSend 简介 LocalSend 是一个免费的开源跨平台的应用程序,允许用户在不需要互联网连接的情况下,通过本地网络安全地与附近设备共享文件和消息。 项目地址&…...

ARM/Linux嵌入式面经(十一):地平线嵌入式实习

地平线嵌入式实习面经 1.自我介绍 等着,在给大哥们准备了。 2.spi与iic协议可以连接多个设备吗?最多多少个?通讯时序。 这是几个问题,在回答的时候。不要一问就开口,花几秒钟沉吟思考整理一下自己的思路。 这个问题问了几个点?每个点的回答步骤。 是我的话,我会采用以…...

基于Redis的分布式锁

分布式场景下并发安全问题的引发 前面通过加锁解决了单机状态下一人一单的问题,但是当出现了分布式,前面的加锁形式不再适用 ,每个jvm有一个自己的锁监视器,只能被内部线程获取,其他jvm无法使用,那么多台j…...

如何将 Apifox 的自动化测试与 Jenkins 集成?

CI/CD (持续集成/持续交付) 在 API 测试 中的主要目的是为了自动化 API 的验证流程,确保 API 发布到生产环境前的可用性。通过持续集成,我们可以在 API 定义变更时自动执行功能测试,以及时发现潜在问题。 Apifox 支持…...

【FFmpeg】av_write_frame函数

目录 1.av_write_frame1.1 写入pkt(write_packets_common)1.1.1 检查pkt的信息(check_packet)1.1.2 准备输入的pkt(prepare_input_packet)1.1.3 检查码流(check_bitstream)1.1.4 写入…...

【算法专题】双指针算法

1. 移动零 题目分析 对于这类数组分块的问题,我们应该首先想到用双指针的思路来进行处理,因为数组可以通过下标进行访问,所以说我们不用真的定义指针,用下标即可。比如本题就要求将数组划分为零区域和非零区域,我们不…...

Lock与ReentrantLock

在 Java 中,Lock 接口和 ReentrantLock 类提供了比使用 synchronized 方法和代码块更广泛的锁定机制。 简单示例: import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class ReentrantLockExample {pr…...

ARM/Linux嵌入式面经(十三):紫光同芯嵌入式

static关键字 static关键字一文搞懂这个知识点,真的是喜欢考!!! stm32启动时如何配置栈的地址 在STM32启动时配置栈的地址是一个关键步骤,这通常是在启动文件(如startup_stm32fxxx.s,其中xxx代表具体的STM32型号)中完成的。 面试者回答: STM32启动时配置栈的地址主…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

大话软工笔记—需求分析概述

需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来&#xf…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...