B站尚硅谷git学习记录

文章目录

  • 一、Git概述
    • 1.何为版本控制
    • 2.为什么需要版本控制
    • 3.版本控制工具
  • 二、Git常用命令
    • 1.设置用户签名
      • 1.1 基本语法
      • 1.2 案例实操
    • 2.初始化本地库
      • 2.1 基本语法
      • 2.2 案例实操
    • 3.查看本地库状态
      • 3.1基本语法
      • 3.2 案例实操
        • (1)首次查看(工作区没有文件)
        • (2)新增文件
        • (3)再次查看(检测到未追踪文件)
    • 4 添加暂存区
      • 4.1 将工作区的文件添加到暂存区
        • (1)基本语法
        • (2)案例实操
      • 4.2 查看状态(检测到暂存区有新文件)
    • 5 提交本地库
      • 5.1 暂存区文件提交到本地库
        • (1)基本语法
        • (2)案例实操
      • 5.2 查看状态(没有文件需要提交)
    • 6 修改文件(hello.txt)
      • 6.1 查看状态(检测到工作区有文件被修改)
      • 6.2 将修改的文件再次添加暂存区
      • 6.3 查看状态(工作区的修改添加到了暂存区)
      • 6.4 将暂存区文件提交到本地库
    • 7 历史版本
      • 7.1 查看历史版本
        • (1)基本语法
        • (2)案例实操
      • 7.2 版本穿梭
        • (1)基本语法
        • (2)案例实操
  • 三、Git客户端便捷操作
    • 1. 安装部署
    • 2. 基础操作
      • 2.1 设置个人信息
      • 2.2 创建新的Git仓库
      • 2.3 提交不同版本
    • 3. 连接GitHub远程仓库

一、Git概述

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

Git易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion(svn)、CVS、Perforce和ClearCase等版本控制工具。

1.何为版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

2.为什么需要版本控制

个人开发过渡到团队协作。

3.版本控制工具

  • 集中式版本控制工具

CVS、SVN(Subversion)、VSS……

集中化的版本控制系统诸如 CVS、SVN等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。

这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。

事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。

  • 分布式版本控制工具

Git、Mercurial、Bazaar、Darcs……

像 Git这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。

分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:

  1. 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)

  2. 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

二、Git常用命令

命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户邮箱
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m “日志信息” 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭

1.设置用户签名

1.1 基本语法

git config --global user.name 用户名

git config --global user.email 邮箱

1.2 案例实操

全局范围的签名设置:

git config --global user.name yhm
git config --global user.email yaohm7788@163.com
git config --list # 查看全局配置
cat ~/.gitconfig  # cat linux中查看文本的命令  ~ 家 [你当前用户的家]/ .gitconfig

说明:

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。

※注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。

2.初始化本地库

2.1 基本语法

git init

2.2 案例实操

在这里插入图片描述
结果查看
在这里插入图片描述

3.查看本地库状态

3.1基本语法

git status

3.2 案例实操

(1)首次查看(工作区没有文件)

在这里插入图片描述

(2)新增文件

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

(3)再次查看(检测到未追踪文件)

在这里插入图片描述

4 添加暂存区

4.1 将工作区的文件添加到暂存区

(1)基本语法

git add 文件名

(2)案例实操

在这里插入图片描述

4.2 查看状态(检测到暂存区有新文件)

在这里插入图片描述

5 提交本地库

5.1 暂存区文件提交到本地库

(1)基本语法

git commit -m “日志信息” 文件名

(2)案例实操

在这里插入图片描述

5.2 查看状态(没有文件需要提交)

在这里插入图片描述

6 修改文件(hello.txt)

6.1 查看状态(检测到工作区有文件被修改)

在这里插入图片描述

6.2 将修改的文件再次添加暂存区

在这里插入图片描述

6.3 查看状态(工作区的修改添加到了暂存区)

在这里插入图片描述

6.4 将暂存区文件提交到本地库

在这里插入图片描述

7 历史版本

7.1 查看历史版本

(1)基本语法

git reflog 查看版本信息

git reflog -n 数量

git log 查看版本详细信息

(2)案例实操

在这里插入图片描述

7.2 版本穿梭

(1)基本语法

git reset --hard 版本号

(2)案例实操

–首先查看当前的历史记录,可以看到当前是在48f4e22这个版本
在这里插入图片描述
–切换到之前版本,8ca80d7版本,也就是我们第一次提交的版本
在这里插入图片描述
–切换完毕之后再查看历史记录,当前成功切换到了8ca80d7版本
在这里插入图片描述
–然后查看文件hello.txt,发现文件内容已经变化
在这里插入图片描述
Git切换版本,底层其实是移动的HEAD指针。

三、Git客户端便捷操作

1. 安装部署

使用命令行操作git相对而言是非常不方便的,查看内容也不是很直观,所有官方推荐使用Git的GUI 客户端来完成页面化操作。

https://git-scm.com/downloads/guis

2. 基础操作

2.1 设置个人信息

在这里插入图片描述

2.2 创建新的Git仓库

在这里插入图片描述

2.3 提交不同版本

新创建文件1.txt,并写入信息。之后可以在GitGui上面进行提交。
在这里插入图片描述
多次提交的版本可以直接在History页面查看区别,不需要再使用reset命令。
在这里插入图片描述

3. 连接GitHub远程仓库

登录自己注册的账号
在这里插入图片描述
点击Publish可以将当前项目创建到GitHub上面。
在这里插入图片描述
之后修改本地文件,就可以先推送到本地git之后再远程同步到GitHub仓库中。

(1)选择对应的分支
在这里插入图片描述
(2)点击推送
在这里插入图片描述

(3)也可以先在GitHub上面创建远程仓库,之后再拉取到本地保持统一。
在这里插入图片描述
在这里插入图片描述
(4)拉取远程仓库到本地
在这里插入图片描述

点击克隆即可,连接完成远程仓库和本地Git之后,在本地修改文件提交Git之后再push推送即可完成同步。
在这里插入图片描述

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

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

相关文章

前端面试题01-11

面试题解答 1. ES5、ES6和ES2015有什么区别? ECMAScript是JavaScript的标准,每隔几年就会发布新的版本。ES5、ES6和ES2015都是这个标准的一部分。 ES5(ECMAScript 5):发布于2009年,是对之前版本的重大更新&#xf…

TinyEngine 低代码引擎:带你5分钟高效构建游戏登录界面

本文由体验技术团队 TinyEngine 项目成员李旭宏创作,欢迎大家实操体验,本体验项目基于 TinyEngine 低代码引擎提供的环境,通过体验简单拖、拉、拽的形式帮助开发者快速了解低代码引擎的使用流程,达到快速开发游戏登录界面的效果。…

143.栈和队列:用队列实现栈(力扣)

题目描述 代码解决 class MyStack { public:queue<int> que; // 定义一个队列用于实现栈// 构造函数&#xff0c;初始化队列MyStack() {}// 向栈中推入元素 xvoid push(int x) {que.push(x); // 使用队列的 push 方法将元素 x 添加到队列尾部}// 从栈中弹出并返回栈顶元…

【MIT 6.5840(6.824)学习笔记】GFS

1 分布式存储系统难点 在设计大型分布式系统或存储系统时&#xff0c;初衷通常是为了获得显著的性能提升&#xff0c;通过数百台计算机的资源来并行完成大量工作。因此&#xff0c;性能问题成为最初的关注点。一个自然的想法是将数据分片&#xff08;Sharding&#xff09;&…

《数字图像处理》笔记/期末复习资料

目录 1 简述二值图像、灰度图像与彩色图像间的区别。 2 图像量化时&#xff0c;如果量化级比较小会出现什么现象&#xff1f;为什么&#xff1f; 3 图像增强的目的是什么&#xff1f; 4 什么是中值滤波&#xff0c;有何特点&#xff1f; 5 叙述高通滤波、低通滤波、带通滤…

区块链技术引领:Web3时代的新网络革命

随着区块链技术的快速发展和不断成熟&#xff0c;人们已经开始意识到它所带来的潜在影响&#xff0c;尤其是在构建一个更加去中心化、安全和透明的互联网时。这个新的互联网时代被称为Web3&#xff0c;它将不再受制于传统的中心化平台&#xff0c;而是更多地依赖于去中心化的网…

Rust最新版安装(v1.78.0+)

系统&#xff1a;Windows 11 专业版 23H2rustc&#xff1a;1.78.0 配置环境变量和设置配置文件 新建文件夹“C:\Rust\Rustup”和“C:\Rust\Cargo”。【以管理员身份运行】打开CMD 设置系统环境变量&#xff0c;如下设置RUSTUP_DIST_SERVER&#xff0c;其余同理 C:\Windows\S…

产线问题排查

CPU过高 使用top命令查看占用CPU过高的进程。 导出CPU占用高进程的线程栈。 jstack pid >> java.txt Java 内存过高的问题排查 1.分析OOM异常的原因&#xff0c;堆溢出&#xff1f;栈溢出&#xff1f;本地内存溢出&#xff1f; 2.如果是堆溢出&#xff0c;导出堆dump&…

前端大文件上传

首先&#xff0c;我们需要使用Blob对象的 slice 方法将文件切分成多个切片。 const CHUNK_SIZE 1024 * 1024; // 我们选择1MB作为每个切片的大小 let file document.getElementById("upload").files[0]; // 得到所选文件 let totalSize file.size; let chunks […

Golang | Leetcode Golang题解之第103题二叉树的锯齿形层序遍历

题目&#xff1a; 题解&#xff1a; func zigzagLevelOrder(root *TreeNode) (ans [][]int) {if root nil {return}queue : []*TreeNode{root}for level : 0; len(queue) > 0; level {vals : []int{}q : queuequeue nilfor _, node : range q {vals append(vals, node.V…

什么是CSTP测试认证,如何通过CSTP认证?

什么是CSTP测试认证&#xff1f; CSTP&#xff08;Certified Software Test Professional&#xff09;认证是由国际软件测试认证委员会&#xff08;International Software Testing Qualifications Board, ISTQB&#xff09;制定的一种专业软件测试认证。该认证旨在提高软件测…

Java中获取运行时资源

Java中获取运行时资源 在Java中&#xff0c;将运行时资源&#xff08;如配置文件、图片、模板文件等&#xff09;放在类路径&#xff08;classpath&#xff09;中的某个位置。 使用getResource()方法 URL resourceUrl getClass().getClassLoader().getResource("confi…

C#算法(15)—求四边形的外接矩形

前言 在上位机软件开发的过程中,我们经常需要一个四边形的外接矩形,这个外接矩形通常有两种一种是正外接矩形,一种是最小面积的最小外接矩形,最常见的应用是我们需要从一个四边形中截取一部分图像,然后对这个截取出来的图像进行处理,下面分别介绍这两种外接矩形的求法 …

物联网架构实例—Ubuntu 安装MySQL

1.ubuntu安装mysql apt-get upgrade apt-get update 安装mysql apt-get install mysql-server Y执行安装后&#xff0c;会来到软件包设置界面. 再次确认设置的密码. 开启mysql的服务 service mysql start 确认是否成功开启mysql service mysql status 确认是否启动成功&a…

Java Object类方法介绍

Object作为顶级类&#xff0c;所有的类都实现了该类的方法&#xff0c;包括数组。 查询Java文档&#xff1a; 1、object.eauqls(): 其作用与 有些类似。 &#xff1a; 是一个比较运算符&#xff0c;而不是一个方法。 ①可以判断基本类型&#xff0c;也可以判断引用类型。 ②若…

gitLab 使用tortoiseGit 克隆新项目 一直提示tortoiseGitPlink输入密码 输完也不生效

问题描述&#xff1a;准备用TortoiseGit拉取gitlab上一个新项目代码&#xff0c;出现tortoiseGitPlink提示让输入密码&#xff0c;输入后又弹出&#xff0c;反复几次&#xff0c;无法down下来代码。 解决方案&#xff1a; 1.找到PuTTYgen工具&#xff0c;打开 2. 点击load 按钮…

Git之创建完美提交

创建完美提交 是否还在把Git当中一个无聊的备份系统吗&#xff1f;是否还在git add .?只要发生修改就塞进提交里&#xff0c;提交会失去很多价值。提交和提交之间的分界很随意。之后再看这些提交&#xff0c;就像再家里翻箱倒柜的找东西&#xff0c;很难找到想要的东西。 整…

山脉数组的峰顶索引 ---- 二分查找

题目链接 题目: 分析: 我们很明显, 可以从峰值位置将数组分成两段, 具有"二段性", 所以可以用二分查找因为arr是山峰数组, 不存在相等的情况如果arr[mid] > arr[mid 1], 说明mid的位置可能是峰值, 移动right mid如果arr[mid] < arr[mid 1], 说明mid的位置…

神奇的一万

在代码界&#xff0c;有个神奇的存在&#xff0c;它叫一万&#xff1a;eval&#xff08;&#xff09;。 这个神奇的一万&#xff0c;在python和JavaScript中都存在&#xff0c;作用也是基本相同的。 Python中的eval函数能将字符串str当成有效的表达式来求值并返回计算结果。 …

vue contextPath的思考

先说我这边的情况&#xff0c;目前项目都是前后端分离开发的&#xff0c;上线有种部署方式&#xff0c;常见的就是前后端分开部署&#xff0c;这是比较常见的&#xff0c;我这边因客户原因&#xff0c;打包一起进行部署比较简单&#xff0c;交付技术运维部方便后期其他现场部署…