对Git更深入了解与学习

对Git更深入了解与学习

  • 0. 前言
    • 0.1 工作区与暂存区
  • 1. git remote update origin
  • 2. git push origin --delete 分支名 删除远端分支
  • 3. git remote
  • 4. git fetch
  • 5. git status
    • 5.1 git status 直观理解
    • 5.2 暂存与暂存取消 (git restore)
    • 5.3 push之后
  • 6. git reset详解 (版本回退方法之一)
    • 6.1 git reset --soft HEAD^
    • 6.2 git reset --hard 撤销
      • 6.2.1 例子1 ` git reset --hard HEAD~1`
      • 6.2.2 例子2 `git reset --hard <commit-hash>`
    • 6.3 后悔药
  • 7. git diff 代码比较
  • 8. git revert (版本回退方法之一)
  • 9. git stash 工作目录中的修改保存到一个临时的存储区域中
  • 10.代码合并 `git merge --no-ff`
  • 11. git cherry-pick

0. 前言

官方文档https://git-scm.com/book/zh/v2/Git-分支-分支简介

0.1 工作区与暂存区

1.工作区(Working Directory)

       工作区就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:
在这里插入图片描述

2.版本库(Repository)
       工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

       Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD
在这里插入图片描述
把文件往Git版本库里添加的时候,是分两步执行的:

  1. 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
  2. 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

参考:https://www.liaoxuefeng.com/wiki/896043488029600/897271968352576


1. git remote update origin

        git remote update origin它的作用是更新本地仓库中远端仓库 origin 的引用。这个命令会从远程仓库 origin 中获取最新的版本信息,让后将信息更新到本地仓库,但它并不会修改你的工作目录或当前分支

        在开发中这个命令主要就是远端新建分支,本地拉取新分支,会在本地建一个与远端名字一样的分支,并进行关联。

       我在远端拉取了一个新分支test1(源自master),但是本地执行git branch -r时并没有该分支,执行git remote update origin后,新分支就出现了。

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

2. git push origin --delete 分支名 删除远端分支

       删除远端分支之后,本地的分支并不会被删除。

fanzhen@fanzhendembp-2 straw % git push origin --delete test1
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/Blue_Pepsi_Cola/straw.git- [deleted]         test1
fanzhen@fanzhendembp-2 straw % git branch -rorigin/HEAD -> origin/masterorigin/devorigin/master
fanzhen@fanzhendembp-2 straw % git branchdevmaster
* test1-- 删除本地分支命令
git branch -d test1

在这里插入图片描述

在这里插入图片描述

3. git remote

  • git remote列出当前配置的远程仓库的简称。
  • git remote -v以详细模式列出当前配置的远程仓库的简称及其对应的 URL。
  • git remote add <name> <url>添加一个新的远程仓库,并指定它的简称和 URL。
  • git remote rm <name>移除指定简称的远程仓库。
  • git remote rename <old-name> <new-name>将指定的远程仓库简称重命名为新的名称。
  • git remote set-url <name> <new-url>修改指定远程仓库简称的 URL。

在这里插入图片描述

4. git fetch

       git fetch 从远端仓库下载最新的提交记录和文件,并将这些更新存储在本地仓库中,但不会自动合并或修改你的工作目录。

       git fetch + git merge == git pull

       我在master中直接修改如下图1
在这里插入图片描述
       然后进行 git fetch
在这里插入图片描述
       在进行 git merge 注意:如果只进行git fetch代码只会进入到本地仓库但不会改变工作目录!

在这里插入图片描述

5. git status

5.1 git status 直观理解

       git status 是一个用于查看当前工作目录状态的 Git 命令,它会显示工作目录和暂存区的状态信息,告诉你哪些文件被修改了、哪些文件已经被暂存了、哪些文件还没有被跟踪等等。
在这里插入图片描述


5.2 暂存与暂存取消 (git restore)

在这里插入图片描述
       暂存前代码的变动
在这里插入图片描述

       暂存的代码文件通过命令git restore –staged <file> 来取消

fanzhen@fanzhendembp-2 straw % git git restore --staged pom.xml

       取消暂存之后,代码会变动会原来的位置
在这里插入图片描述


5.3 push之后

在这里插入图片描述


6. git reset详解 (版本回退方法之一)

       git reset是 Git 中用于移动 HEAD 指针和分支引用的命令,它可以用来撤销提交、修改分支的位置,或者将文件从暂存区移动回工作目录等操作。

6.1 git reset --soft HEAD^

       git reset --soft HEAD^该命令的作用是撤销已经commit且没有push的代码

       详解:git reset --soft HEAD^命令的含义是将当前分支的 HEAD 指向前一个提交(即父提交),但不会修改工作区和暂存区的内容。这个命令通常用于撤销上一次提交并将修改保留在工作区和暂存区中,以便你可以对上一次提交的内容进行修改后再次提交。

       执行这个命令后,你会发现 HEAD 指向了前一个提交,但工作区和暂存区的内容并没有改变。这意味着你可以在这个状态下对文件进行修改,并将这些修改重新提交到仓库中。

6.2 git reset --hard 撤销

       git reset --hard的作用是将当前分支的 HEAD 指针重置到指定的提交(commit),并且将暂存区和工作目录都重置为指定提交的状态,这样就可以撤销之前的提交和修改。

6.2.1 例子1 git reset --hard HEAD~1

 git reset --hard HEAD~1git push -f        

       对下面代码进行了修改,在第41行的位置增加了一段代码,这时可以从第二个图看到,已经新增了一条记录fix:测试1,这时我使用命令 git reset --hard HEAD~1,可以看到HEAD指向了fix: 测试3,接着我执行git push -f,可以看到master中的fix:测试1已消失。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2.2 例子2 git reset --hard <commit-hash>

       git reset --hard <commit-hash> 重置到指定提交。要注意使用git reset --hard命令会丢弃工作目录和暂存区中未提交的修改。

       还是同一个位置,我增加了代码,并push这时我通过git reset --hard cb10754a,其中cb10754afix: 测试3的code,并且执行git push -f,在第四个图中版本回退了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3 后悔药

       我们通过命令git reset --hard <commit-hash>回退到了指定版本,但是这个版本之后的代码却消失了。但是我们又想回到某个版本(回退版本之后发的代码版本),这时就需要用到命令 git reflog就可以查看历史commit-hash

       这时我们执行命令git reset --hard 07f65b9,然后在强制push,可以看到图三的结果。

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

7. git diff 代码比较

       git diff 是 Git 中用于查看文件修改的命令,它可以显示工作目录、暂存区和提交历史之间的差异。
       git diff 命令可以用来比较不同提交、不同分支或者不同版本之间的文件差异。

  1. git diff 比较工作目录和暂存区的差异
  2. git diff HEAD 比较工作目录和最新提交(HEAD)的差异
  3. git diff --staged 比较暂存区和最新提交(HEAD)的差异
  4. git diff <commit1> <commit2> 比较两个提交之间的差异

比较工作目录和暂存区的差异
比较工作目录和暂存区的差异

比较两个提交之间的差异其中第一个07f65b92相较于cb10754a多了图2的代码。这里显示的是被比较的代码。
在这里插入图片描述
在这里插入图片描述
反过来的结果
在这里插入图片描述

8. git revert (版本回退方法之一)

       git revert 命令用于撤销之前的提交,它会创建一个新的提交来撤销指定提交的更改,而不是直接修改历史记录。这意味着 git revert 不会改变历史记录,而是在历史记录上添加新的提交来撤销之前的更改。

1.首先通过下面命令同步远端代码,将远端代码覆盖本地,使得本地与远端代码保持一致。

git fetch origin  作用是从远程仓库 origin 中获取最新的提交记录,并将这些提交记录下载到本地仓库,但并不会自动合并或修改当前工作目录中的文件。
git reset --hard origin/master  命令将本地分支重置为远程分支的最新状态。这将会丢弃本地所有的修改.

2.修改代码并提交
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.执行git revert 43af9965
在这里插入图片描述

在这里插入图片描述


常用的git revert 命令

  1. 撤销单个提交:git revert <commit-hash>
  2. 撤销多个提交:git revert <commit1> <commit2> ...

9. git stash 工作目录中的修改保存到一个临时的存储区域中

       git stash 命令的作用是将当前的工作目录中的修改(包括已经暂存但尚未提交的修改)保存到一个临时的存储区域中。
       常用于以下情况:

  1. 暂时切换到其他分支工作
  2. 临时保存工作状态:当你需要处理一些紧急任务或者突发情况,但又不想提交当前的修改时,可以使用 git stash 临时保存工作状态,等处理完紧急情况后再回到这些修改。
  3. 清理工作目录 :当你的工作目录中有一些临时的修改或者实验性的代码,但不想将它们提交到版本库中时,可以使用git stash将这些修改暂时存储起来,以便稍后再使用。

       举个例子,我当前代码有修改,直接切换分支会报错,切换失败。这时我们执行git stash(图3),可以看到切换分支成功。但我们再次切换回来,返现修改的代码不见了(图4),这时我们要执行命令 git stash pop,代码也就回来了(图5)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

10.代码合并 git merge --no-ff

git merge --no-ff dev
dev是被合并的分支,即当前在master分支输入此命令,会将dev分支的代码合并到master

效果
在这里插入图片描述


11. git cherry-pick

       git cherry-pick命令的作用是选择一个或多个提交,并将这些提交的更改应用到当前分支上。这个命令通常用于从一个分支上选择某个提交并将其应用到另一个分支上,或者在当前分支上将某些提交重新应用一遍。

       我们master分支的git记录如图1所示,而dev分支的记录如图2所示。在dev分支上执行git cherry-pick 33f2c010这个33f2c010在master上是对README.md文件的第一行增加1字段(图3)。

       在命令执行后看到图4与图5,发现master上的提交到了dev

       当然如果一次通过多个提交可以使用git cherry-pick <commit-hash1> <commit-hash2> ... 命令

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

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

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

相关文章

SpringBootAdmin邮件通知

在上一篇中我们学习到了 Admin Service Clustering 分布式缓存配置 &#xff0c;这一篇我们来学习&#xff0c;客户端离线&#xff0c;出现故障的时候&#xff0c;我们这么能及时知道呢&#xff0c;发现邮件通知也许是最简单的方式了&#xff01; 邮件通知 邮件通知将作为使用…

Linux文本编辑器-vi/vim

一.vi/vim编辑器介绍 vi\vim是visual interface的简称, 是Linux中最经典的文本编辑器 同图形化界面中的 文本编辑器一样&#xff0c;vi是命令行下对文本文件进行编辑的绝佳选择。 vim 是 vi 的加强版本&#xff0c;兼容 vi 的所有指令&#xff0c;不仅能编辑文本&#xff0c;而…

哈希的基本概念(开散列和闭散列)(附代码)

哈希 哈希概念哈希冲突哈希函数常见的哈希函数 哈希冲突的解决闭散列开散列 哈希概念 传统的查找函数&#xff0c;搜索的效率取决于比较的次数。而hash算法&#xff1a;在理想情况下&#xff0c;可以不经过任何比较&#xff0c;一次就能得到要搜索的结果。 存储结构&#xff1…

面向社交网络语言隐写分析

论文&#xff1a;Linguistic Steganalysis Toward Social Network 发表在&#xff1a;IEEE Transactions on Information Forensics & Security是网络与信息安全领域的国际两大顶级期刊之一&#xff0c;中国计算机学会&#xff08;CCF&#xff09;推荐的A类期刊&#xff0c…

​用技术的视角,去看一台家用 MPV 该有的水准

「MPV」一个在 2023 年之前都属于「小众」车型的品类。 但从 2023 年初开始&#xff0c;MPV 却变成了新能源&#xff0c;特别是高端新能源品牌必争的细分产品。 从岚图推梦想家开始&#xff0c;到腾势 D9&#xff0c;再到极氪 009&#xff0c;最后到魏牌高山&#xff0c;标志…

【开源】基于JAVA语言的智慧社区业务综合平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 业务类型模块2.2 基础业务模块2.3 预约业务模块2.4 反馈管理模块2.5 社区新闻模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 业务类型表3.2.2 基础业务表3.2.3 预约业务表3.2.4 反馈表3.2.5 社区新闻表 四、系统展…

Java中的this和super

①this 在Java中&#xff0c;this关键字代表当前对象的引用。它可以用于以下几个方面&#xff1a; 引用当前对象的成员变量&#xff1a;使用this关键字可以引用当前对象的成员变量&#xff0c;以区分成员变量和方法参数或局部变量之间的命名冲突。例如&#xff0c;如果一个方法…

LeetCode做题总结 226. 翻转二叉树

226. 翻转二叉树 代码1 报错代码2 报错代码3 正确。 代码1 报错 class Solution {public TreeNode invertTree(TreeNode root) {// TreeNode _root root; // 这是在保证// _root preOrderTree(root);// return root;root preOrderTree(root);return root;}public TreeNode …

【机器学习300问】15、什么是逻辑回归模型?

一、逻辑回归模型是为了解决什么问题&#xff1f; 逻辑回归&#xff08;Logistic Regression&#xff09;是一种广义线性回归分析模型&#xff0c;尤其适用于解决二分类问题&#xff08;输出为两个类别&#xff09;。 &#xff08;1&#xff09;二分类举例 邮件过滤&#xff…

Java Web(五)--DOM

介绍 DOM 全称是 Document Object Model 文档对象模型&#xff1b; DOM 是 W3C&#xff08;万维网联盟&#xff09;的标准。 DOM 定义了访问 HTML 和 XML 文档的标准&#xff1a; "W3C 文档对象模型 &#xff08;DOM&#xff09; 是中立于平台和语言的接口&#xff0…

pdf怎么转换成jpg图片?pdf转图片工具用它就够了

有时候&#xff0c;我们可能需要将pdf文档转换为图片格式&#xff0c;以便于文档的处理和管理。通过将pdf转换为图片&#xff0c;可以将每一页pdf转换为独立的图片文件&#xff0c;便于整理、存储和管理&#xff0c;如果您有多个PDF文件需要转换成图片&#xff0c;可以批量pdf转…

Modern C++ std::bind的实现原理

1. 前言 前面写过《std::function从实践到原理》&#xff0c;管中规豹了std::function的一点点原理&#xff0c;不过还有一个与std::function密切相关的函数std::bind, 允许编程者绑定几个参数&#xff0c;本文着重介绍它的实现原理。不介绍一下它&#xff0c;有点吃肉不吃蒜味…

npm安装卡住问题(最新版)

npm安装卡住问题(最新版) 背景&#xff1a; ​ 最近这两天用npm安装一些包的时候&#xff0c;发现一直卡住&#xff1a; 报错&#xff1a; idealTree:npm: sill idealTree buildDeps之前能用的现在不能用了&#xff0c;我一想&#xff0c;是不是源头的问题&#xff0c;还真是…

C语言每日一题(48)回文链表

力扣 234 回文链表 题目描述 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&#xff1…

Redis性能运行参数的监测工具 - WGCLOUD

WGCLOUD是一款开源免费的运维监控平台&#xff0c;可以监测Redis的运行情况&#xff0c;比如redis的Key数量&#xff0c;过期Key数量&#xff0c;Redis的端口号&#xff0c;Redis的版本&#xff0c;同步状态&#xff0c;集群模式&#xff0c;使用内存等等数据 中间件Redis监测…

FinBert模型:金融领域的预训练模型

文章目录 模型及预训练方式模型结构训练语料预训练方式 下游任务实验结果实验一&#xff1a;金融短讯类型分类实验任务数据集实验结果 实验二&#xff1a;金融短讯行业分类实验任务数据集实验结果 实验三&#xff1a;金融情绪分类实验任务数据集实验结果 实验四&#xff1a;金融…

瑞_数据结构与算法_二叉搜索树

文章目录 1 什么是二叉搜索树1.1 二叉搜索树的特征1.2 前驱后继 2 二叉搜索树的Java实现2.1 定义二叉搜索树节点类BSTNode泛型key改进 2.2 实现查找方法get(int key)递归实现非递归实现 ★非递归实现 泛型key版本 2.3 实现查找最小方法min()递归实现非递归实现 ★ 2.4 实现查找…

Django从入门到精通(三)

目录 七、ORM操作 7.1、表结构 常见字段 参数 示例 7.2、表关系 一对多 多对多 第一种方式 第二种方式 7.3、连接MYSQL 7.4、数据库连接池 7.5、多数据库 读写分离 分库&#xff08;多个app ->多数据库&#xff09; 分库&#xff08;单app&#xff09; 注意…

狗东云搭建幻兽帕鲁(奶妈级别)

使用狗东云搭建幻兽帕鲁 同配置狗东云比腾讯云便宜&#xff0c;2核2G服务器仅50元1年&#xff0c;4核8G服务器458元1年&#xff0c;点击链接直达. 进入页面会跳转到注册&#xff0c;先注册账户&#xff0c;注册好后页面跳转&#xff0c;没有跳转点这里&#xff0c;选择页面左侧…

[AIGC 大数据基础] 浅谈hdfs

HDFS介绍 什么是HDFS&#xff1f; HDFS&#xff08;Hadoop Distributed File System&#xff09;是Apache Hadoop生态系统的一部分&#xff0c;是一个分布式文件系统。它被设计用于存储和处理大规模数据集&#xff0c;并且能够容错、高可靠和高性能地处理文件。 HDFS是为了支…