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

news2024/9/21 4:24:36

学习目标

  • 能够说出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 test
      git 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\manager
      git clone git@github.com:xsq13579/info.git
    
  • 2.克隆远程仓库到本地

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

4.配置经理身份信息

  cd E:\downloads\study\FL_code\GitStudy\manager\info
  git 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\zhangsan
      git clone https://github.com/xsq13579/info.git

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

  • 3.配置张三身份信息

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

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


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

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

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

相关文章

linux-5.10.110内核源码分析 - Freescale ls1012a pcie msi中断

1、dts msi控制器描述 1.1、dts描述 msi: msi-controller11572000 {compatible "fsl,ls1012a-msi";reg <0x0 0x1572000 0x0 0x8>;msi-controller;interrupts <0 126 IRQ_TYPE_LEVEL_HIGH>; };ls1012a msi控制器具体介绍可以参考官网手册”25.1.1 PC…

MySQL 中的 DDL、DML、DQL 和 DCL

文章目录 1. 数据定义语言&#xff08;DDL&#xff09;2. 数据操作语言&#xff08;DML&#xff09;3. 数据查询语言&#xff08;DQL&#xff09;4. 数据控制语言&#xff08;DCL&#xff09;总结 在 MySQL 数据库管理系统中&#xff0c;SQL 语句可以根据其功能分为不同的类别&…

玫瑰千层烤饼:味蕾的芬芳盛宴

在美食的缤纷世界里&#xff0c;有一种独特的存在&#xff0c;它融合了玫瑰的芬芳与烤饼的酥脆&#xff0c;那便是令人陶醉的甘肃美食玫瑰千层烤饼。食家巷玫瑰千层烤饼&#xff0c;宛如一件精心雕琢的艺术品。每一层薄如纸张的面皮&#xff0c;都承载着制作者的细腻与用心。层…

GD32实战篇-双向数控BUCK-BOOST-BOOST升压理论基础

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布&#xff1a; https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

JavaWeb-【1】HTML

笔记系列持续更新,真正做到详细!!本次系列重点讲解后端,那么第一阶段先讲解前端 目录 1、Javaweb技术体系 2、BS架构说明 3、官方文档 4、网页组成 5、HTML 6、HTML快速入门 7、HTML基本结构 8、HTML标签 ​9、HTML标签使用细节 ①、font标签 ②、字符实体 ③、标…

【在Linux世界中追寻伟大的One Piece】HTTPS协议原理

目录 1 -> HTTPS是什么&#xff1f; 2 -> 相关概念 2.1 -> 什么是"加密" 2.2 -> 为什么要加密 2.3 -> 常见的加密方式 2.4 -> 数据摘要 && 数据指纹 2.5 -> 数字签名 3 -> HTTPS的工作过程 3.1 -> 只使用对称加密 3.2 …

Django之项目开发(一)

一、项目的生命周期介绍 传统Web 项目的生命周期指的是从开始构建一个网站到该网站完成并维护的整个过程。通常情况下,Web 项目的生命周期包括以下几个阶段 需求分析阶段:在这个阶段,项目组会与客户进行沟通,确定网站的功能、内容和设计。 主要由产品经理参与产出思路与方案…

谷粒商城学习笔记-逆向工程错误记录

文章目录 1&#xff0c;Since Maven 3.8.1 http repositories are blocked.1.1 在maven的settings.xml文件中&#xff0c;新增如下配置&#xff1a;1.2&#xff0c;执行clean命令刷新maven配置 2&#xff0c;internal java compiler error3&#xff0c;启动逆向工程报错&#x…

【qt】获取主机信息系统

话不多说,先一睹芳颜! 如果你也想达到这种效果,那咱们就开始吧! 目录 一.登录界面设计1.ui登录设计 二.加载界面1.lineEdit的密码输入模式2.lineEdit按回车跳转的信号3.密码的判断4.创建加载界面5.创建定时器来进行进度条的移动6.定时器执行的槽函数 三.主机信息界面1.主机信息…

软件系统架构的一些常见专业术语

分层架构是逻辑上的&#xff0c;在物理部署上&#xff0c;三层结构可以部署在同一个物理机器上&#xff0c;但是随着网站业务的发展&#xff0c;必然需要对已经分层的模块分离部署&#xff0c;即三层结构分别部署在不同的服务器上&#xff0c;使网站拥有更多的计算资源以应对越…

瑞芯微rk356x TF卡烧写选择指定的屏幕打印烧写的过程

rk356x中TF卡烧写屏幕选择 1、开发环境2、问题描述3、解决办法4、总结5、 图片展示1、开发环境 系统:linux系统 芯片:356x 显示:多屏显示(HDMI, MIPI, LVDS, EDP) 2、问题描述 由于在多屏显示的情况下,HDMI屏在LVDS、MIPI或者EDP协同下,默认情况下,在TF卡烧录过程中…

QT——Excel实现自绘区域选择边框

文章目录 一、自绘区域边框1.1、效果展示2.2、问题整理2.2.1、重绘单元格选择区2.2.2、选择区域的大小 一、自绘区域边框 1.1、效果展示 单选 多选 2.2、问题整理 2.2.1、重绘单元格选择区 误区: 继承QStyledItemDelegate重写paint,测试发现只能在单元格内绘制。 通过继…

秋招力扣刷题——从前序与中序遍历序列构造二叉树

一、题目要求 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 二、解法思路 根据二叉树的遍历结构重构二叉树&#xff0c;至少两种遍历方式结合&…

操作系统智能助手OS Copilot评测报告

背景 如果不是朋友告知&#xff0c;我还不知道阿里云推出了【操作系统智能助手OS Copilot】这样一款产品。 我做系统运维的工作还是挺多的&#xff0c;知道系统运维工作的一些痛点&#xff1b;例如&#xff1a; Linux命令繁杂&#xff0c;想全部记住不太可能&#xff0c;多数…

自注意力 公式解释

公式 (\mathbf{y}_i f(\mathbf{x}_i, (\mathbf{x}_1, \mathbf{x}_1), \ldots, (\mathbf{x}_n, \mathbf{x}_n)) \in \mathbb{R}^d) 描述了自注意力机制中单个词元的输出表示如何生成。我们来逐步解释这个公式&#xff1a; 输入序列 (\mathbf{x}_1, \mathbf{x}_2, \ldots, \math…

MySQL之备份与恢复(八)

备份与恢复 还原逻辑备份 如果还原的是逻辑备份而不是物理备份&#xff0c;则与使用操作系统简单地复制文件到适当位置的方式不同&#xff0c;需要使用MySQL服务器本身来加载数据到表中。在加载导出文件之前&#xff0c;应该先花一点时间考虑文件有多大&#xff0c;需要多久加…

数据结构--二叉树和堆

目录 1.基本概念 2.树的遍历方法 3.满二叉树&&完全二叉树 4.逻辑结构&&物理结构 5.推理公式 6.二叉树应用--堆 7.简单实现堆 1.基本概念 &#xff08;1&#xff09;这个里面的概念还是比较多的&#xff0c;但是大部分我们只需要了解即可&#xff0c;因为…

如何实现一套键盘鼠标控制两台计算机(Mouse Without Borders快速上手教程)

需求背景 当我们需要同时使用一台主机和一台笔记本的时候&#xff0c;如果使用两套键盘和鼠标分别操作各自的系统&#xff0c;非常地不便捷且非常占据桌面空间。那么如何使用一套键盘鼠标控制两台电脑呢&#xff1f; 需求实现 软件说明 我们可以使用微软官方的一款软件Mous…

vscode使用Git的常用操作

主打一个实用 查看此篇之前请先保证电脑安装了Git&#xff0c;安装教程很多&#xff0c;可自行搜索 一.初始化本地仓库&#x1f534; 使用vscode打开项目文件夹如图所使初始化仓库&#xff0c;相当于命令行的git init 二.提交到暂存区&#x1f534; 二.提交到新版本&#x1f…

07浅谈大语言模型可调节参数tempreture

浅谈temperature 什么是temperature&#xff1f; temperature是大预言模型生成文本时常用的两个重要参数。它的作用体现在控制模型输出的确定性和多样性&#xff1a; 控制确定性&#xff1a; temperature参数可以控制模型生成文本的确定性&#xff0c;大部分模型中temperatur…