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

MIT工具课第六课任务 Git基础练习题

  1. 如果您之前从来没有用过 Git,推荐您阅读 Pro Git 的前几章,或者完成像 Learn Git Branching 这样的教程。重点关注 Git 命令和数据模型相关内容;
    相关内容整理链接:
    Linux Git新手入门 git常用命令 Git全面指南:基础概念、操作与远程仓库、标签、分支全解析 MIT第六课-CSDN博客

     
  2. 克隆 本课程网站的仓库
    1. 将版本历史可视化并进行探索
      首先通过ssh克隆仓库:
      # 克隆仓库
      $ git clone git@github.com:missing-semester-cn/missing-semester-cn.github.io.git# 版本历史可视化
      $ git log --graph
    2. 是谁最后修改了 README.md 文件?(提示:使用 git log 命令并添加合适的参数)
      $ git log --pretty="%an %ad" README.md | head -1
      Zhenger233 Fri Nov 15 00:01:20 2024 +0800
      
    3. 最后一次修改 _config.yml 文件中 collections: 行时的提交信息是什么?(提示:使用 git blame 和 git show
      $ git blame _config.yml | grep collections:
      a88b4eac (Anish Athalye  2020-01-17 15:26:30 -0500 18) collections:
      
  3. 使用 Git 时的一个常见错误是提交本不应该由 Git 管理的大文件,或是将含有敏感信息的文件提交给 Git 。尝试向仓库中添加一个文件并添加提交信息,然后将其从历史中删除 ( 这篇文章也许会有帮助);
    $ vim hello.txt
    $ git add hello.txt
    $ git status -s
    A  hello.txt
    $ git commit -m "add hello.txt"
    [master 96eb0f0] add hello.txt1 file changed, 1 insertion(+)create mode 100644 hello.txt
    $ git log --oneline --graph
    * 96eb0f0 (HEAD -> master) add hello.txt
    *   89f3b60 (origin/master, origin/HEAD) Merge pull request #186 from Zhenger233/master
    |\
    | * fc93d7c 修改为中文README
    |/
    *   1fd7b9b Merge pull request #183 from mland2333/master
    |\
    | * fa1e2ea 修改错字
    |/
    *   59aa289 Merge pull request #178 from Infinite-Approximation/master
    |\
    | * 626a323 缺少了对于top-level directory的翻译
    |/
    *   af054fa Merge pull request #172 from pspdada/master
    |\
    | * 9baa48c remove irrelevant text
    | * f5df7de fix wrong index
    | * ef9a2f7 fix typo
    |/
    *   dd3f3dd Merge pull request #171 from HowieChih/for-better-understanding
    |\
    | * 8e26b4a 更新#课程概览与 shell##一个功能全面又强大的工具关于修改亮度文件报错的翻译
    | * 4e2ff43 更新#课程概览与 shell##一个功能全面又强大的工具关于修改亮度文件报错的翻译
    |/
    *   d284d3e Merge pull request #170 from crosscap/typo-fix
    |\
    | * 6e27b4f fix some typo in version-control.md
    |/
    *   f3773ac Merge pull request #169 from xjzh123/patch-1
    |\
    | * 45897e1 修复multiple错译为“乘积”
    * |   ede827e Merge pull request #168 from DXShelley/master
    |\ \
    | |/
    |/|
    $ git reset --hard 89f3
    HEAD 现在位于 89f3b60 Merge pull request #186 from Zhenger233/master
    $ git log --oneline --graph --all*   89f3b60 (HEAD -> master, origin/master, origin/HEAD) Merge pull request #186 from Zhenger233/master
    |\
    | * fc93d7c 修改为中文README
    |/
    *   1fd7b9b Merge pull request #183 from mland2333/master
    |\
    | * fa1e2ea 修改错字
    |/
    *   59aa289 Merge pull request #178 from Infinite-Approximation/master
    |\
    | * 626a323 缺少了对于top-level directory的翻译
    |/
    *   af054fa Merge pull request #172 from pspdada/master
    |\
    | * 9baa48c remove irrelevant text
    | * f5df7de fix wrong index
    | * ef9a2f7 fix typo
    |/
    *   dd3f3dd Merge pull request #171 from HowieChih/for-better-understanding
    |\
    | * 8e26b4a 更新#课程概览与 shell##一个功能全面又强大的工具关于修改亮度文件报错的翻译
    | * 4e2ff43 更新#课程概览与 shell##一个功能全面又强大的工具关于修改亮度文件报错的翻译
    |/
    *   d284d3e Merge pull request #170 from crosscap/typo-fix
    |\
    | * 6e27b4f fix some typo in version-control.md
    |/
    *   f3773ac Merge pull request #169 from xjzh123/patch-1
    |\
    | * 45897e1 修复multiple错译为“乘积”
    * |   ede827e Merge pull request #168 from DXShelley/master
    |\ \
    | |/
    |/|
    | *   6221bbc Merge branch 'master' of https://pi-gitserver.kooldns.cn/dxshelley/missing-semest
    er-cn 合并
    | |\
    | | * 3417047 'test'
    | |/
    

    先添加一个hello.txt文件并且添加至暂存区再提交,产生96eb0f0开头的新分支,再使用git reset --hard HEAD^回溯至前一个版本且丢弃之前的提交或git reset --hard 89f3b60指定回溯至该哈希值的提交版本(这是不可逆的重置)。
    或者以git rebase -i 交互式改写log历史,但是是以更新提交的方式,这是可逆的,不会删除一起版本的内容。

  4. 从 GitHub 上克隆某个仓库,修改一些文件。当您使用 git stash 会发生什么?当您执行 git log --all --oneline 时会显示什么?通过 git stash pop 命令来撤销 git stash 操作,什么时候会用到这一技巧?

    如果修改了一些文件再进行切换至其他提交的操作,切换到其他提交的时候修改的文件内容仍然存在于其他提交中。你的修改依然存在,这是因为除非收到明确的指令,否则 Git 不会自动丢弃工作目录中的更改,这是git默认的规则,因为git不会绑定提交于文件修改,允许你在当前提交下修改文件然后切换至其他提交出创立新的分支来提交。

    所以当我们需要进行干净的切换,不保留更改内容,就需要用git stash.该命令会将工作目录以及暂存区(索引)中的已暂存和未暂存更改都进行暂存。运行此命令后,你的工作目录就会变得干净(重置为上一次提交时的状态)。

    执行 git log --all --oneline 时会显示:
    $ git stash
    保存工作目录和索引状态 WIP on master: 89f3b60 Merge pull request #186 from Zhenger233/master
    $ git log --oneline --decorate --all
    5656de9 (refs/stash) WIP on master: 89f3b60 Merge pull request #186 from Zhenger233/master
    eabdfc2 index on master: 89f3b60 Merge pull request #186 from Zhenger233/master
    89f3b60 (HEAD -> master, origin/master, origin/HEAD) Merge pull request #186 from Zhenger233/master
    fc93d7c 修改为中文README
    
    一下是stack的常用命令
     
    **应用和删除stash**- **应用stash(`git stash apply `)**:当你想要恢复之前保存的修改时,可以使用`git stash apply`命令。默认情况下,它会应用最近保存的stash(`stash@{0}`)。如果想要应用特定的stash,可以使用`git stash apply stash@{<数字>}`。需要注意的是,应用stash后,stash记录仍然存在,你可以多次应用同一个stash。- **删除stash(`git stash drop`)**:如果确定不再需要某个stash,可以使用`git stash drop`命令来删除它。同样,默认删除最近的stash,也可以通过`git stash drop stash@{<数字>}`来指定删除某个特定的stash。例如,运行`git stash drop stash@{0}`会删除最近保存的stash。- **应用并删除stash(`git stash pop`)**:这是一个结合了`apply`和`drop`功能的命令。它会应用最近的stash,然后删除这个stash。如果有多个stash,并且想要对特定的stash进行`pop`操作,可以使用`git stash pop stash@{<数字>}`。
    **stash的其他操作**- **创建带消息的stash(`git stash save "message"`)**:在保存stash时,可以添加一个消息来描述这个stash的内容。例如,`git stash save "Temporary fix for bug"`会保存当前工作状态,并带有指定的消息。这样在查看stash列表时,可以更容易地了解每个stash的用途。- **查看stash的详细内容(`git stash show`)**:可以使用`git stash show`来查看stash中修改的文件列表以及大致的修改内容。如果想查看更详细的内容,包括文件的具体修改,可以使用`git stash show -p`,它会以`patch`(补丁)的形式显示详细的文件修改内容。
    当你想要stash内的暂存修改应用于其他指定的提交时,你可以切换至该提交,然后执行 stash apply,该提交就会应用这些提交。如果你想同时删除这个stash就可以使用stash pop
     
  5. 与其他的命令行工具一样,Git 也提供了一个名为 ~/.gitconfig 配置文件 (或 dotfile)。请在 ~/.gitconfig 中创建一个别名,使您在运行 git graph 时,您可以得到 git log --all --graph --decorate --oneline 的输出结果;

    执行:
    $ git config -f ./.gitconfig alias.graph "log --all --graph --decorate --oneline"# .gitconfig文件中多出现一行
    [alias]graph = log --all --graph --decorate --oneline
    
    如果你想在~/.gitconfig配置可以执行:
     
    $ git config --global alias.graph "log --all --graph --decorate --oneline"
  6. 您可以通过执行 git config --global core.excludesfile ~/.gitignore_global 在 ~/.gitignore_global 中创建全局忽略规则。配置您的全局 gitignore 文件来自动忽略系统或编辑器的临时文件,例如 .DS_Store

     
    $ touch ~/.gitignore_global
    # 这个命令的作用是告诉 Git 在进行操作时(比如 git add、git status 等),除了查看每个仓库本地的 .gitignore 文件中的忽略规则外,还要参考这个全局的 .gitignore_global 文件里的规则来决定哪些文件#或文件夹需要忽略。
    $ git config --global core.excludesfile ~/.gitignore_global
    
    之后启动vim .gitignore_global添加.DS_Store 文件来忽略这个文件。也可以:
    *.log(忽略所有以 .log 结尾的日志文件)
    *.swp(忽略 vim 编辑器产生的临时交换文件等)
    .idea/(忽略 JetBrains 系列 IDE(如 IntelliJ IDEA、PyCharm 等)产生的项目配置文件夹)
     
  7. Fork 本课程网站的仓库,找找有没有错别字或其他可以改进的地方,在 GitHub 上发起拉取请求(Pull Request);

    首先,在 GitHub 找到目标仓库,点击 “Fork” 按钮,在自己账号下创建副本。
    克隆到本地,复制 Fork 后仓库的 URL,在本地用git clone命令克隆仓库。
    $ git clone git@github.com:attackedrookie/missing-semester-cn.github.io.git
    正克隆到 'missing-semester-cn.github.io'...
    remote: Enumerating objects: 3191, done.
    remote: Counting objects: 100% (902/902), done.
    remote: Compressing objects: 100% (61/61), done.
    remote: Total 3191 (delta 854), reused 842 (delta 841), pack-reused 2289 (from 1)
    接收对象中: 100% (3191/3191), 15.49 MiB | 1020.00 KiB/s, 完成.
    处理 delta 中: 100% (2030/2030), 完成.
    $ cd missing-semester-cn.github.io/
    

    在本地仓库创建新分支来修改,提交代码,后将本地修改后的分支推送到 GitHub 上的 Fork 仓库。之后可以在 GitHub 的 Fork 仓库页面,点击 “Compare & pull request”,填写标题、描述等信息,选择合并的目标分支,最后点击 “Create pull request”。
    例如:

相关文章:

MIT工具课第六课任务 Git基础练习题

如果您之前从来没有用过 Git&#xff0c;推荐您阅读 Pro Git 的前几章&#xff0c;或者完成像 Learn Git Branching 这样的教程。重点关注 Git 命令和数据模型相关内容&#xff1b; 相关内容整理链接&#xff1a;Linux Git新手入门 git常用命令 Git全面指南&#xff1a;基础概念…...

计算机网络安全

从广义来说&#xff0c;凡是涉及到网络上信息的机密性、报文完整性、端点鉴别等技术和理论都是网络安全的研究领域。 机密性指仅有发送方和接收方能理解传输报文的内容&#xff0c;而其他未授权用户不能解密&#xff08;理解&#xff09;该报文报文完整性指报文在传输过程中不…...

Delphi 实现键盘模拟、锁定键盘,锁定鼠标等操作

Delphi 模拟按键的方法 SendMessageA 说明: 调用一个窗口的窗口函数&#xff0c;将一条消息发给那个窗口。除非消息处理完毕&#xff0c;否则该函数不会返回SendMessage所包含4个参数: 1. hwnd 32位的窗口句柄窗口可以是任何类型的屏幕对象&#xff0c;因为Win32能够维护大多数…...

RTK数据的采集方法

采集RTK&#xff08;实时动态定位&#xff09;数据通常涉及使用高精度的GNSS&#xff08;全球导航卫星系统&#xff09;接收器&#xff0c;并通过基站和流动站的配合来实现。本文给出RTK数据采集的基本步骤 文章目录 准备设备设置基站设置流动站数据采集数据存储与处理应用数据…...

Next.js 入门学习

一、引言 在现代 Web 开发领域&#xff0c;Next.js 已成为构建高性能、可扩展且用户体验卓越的 React 应用程序的重要框架。它基于 React 并提供了一系列强大的特性和工具&#xff0c;能够帮助开发者更高效地构建服务器端渲染&#xff08;SSR&#xff09;、静态站点生成&#…...

2024年认证杯SPSSPRO杯数学建模B题(第一阶段)神经外科手术的定位与导航解题全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 B题 神经外科手术的定位与导航 原题再现&#xff1a; 人的大脑结构非常复杂&#xff0c;内部交织密布着神经和血管&#xff0c;所以在大脑内做手术具有非常高的精细和复杂程度。例如神经外科的肿瘤切除手术或血肿清除手术&#xff0c;通常需要…...

安卓底层相机流的传输方式

这是安卓 相机流的定义 typedef enum {CAM_STREAMING_MODE_CONTINUOUS, /* continous streaming */CAM_STREAMING_MODE_BURST, /* burst streaming */CAM_STREAMING_MODE_BATCH, /* stream frames in batches */CAM_STREAMING_MODE_MAX} cam_streaming_mode_t; 在ca…...

【单链表】(更新中...)

一、 题单 206.反转链表203.移除链表元素 876.链表的中间结点BM8 链表中倒数最后k个结点21.合并两个有序链表 二、题目简介及思路 206.反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 思路简单&#xff0c;但是除了要两个指针进…...

开源堡垒机JumpServer配置教程:使用步骤与配置

开源堡垒机JumpServer配置教程&#xff1a;使用步骤与配置 上一篇文章星哥讲了如何安装JumpServer堡垒机&#xff0c;本篇文章来讲如何配置和使用JumpServer。 安装成功后&#xff0c;通过浏览器访问登录 JumpServer 地址: http://<JumpServer服务器IP地址>:<服务运…...

上门服务小程序开发,打造便捷生活新体验

随着互联网的快速发展&#xff0c;各种上门服务成为了市场的发展趋势&#xff0c;不管是各种外卖、家政、美甲、维修、按摩等等&#xff0c;都可以提供上门服务&#xff0c;人们足不出户就可以满足各种需求&#xff0c;商家也能够获得新的拓展业务渠道&#xff0c;提高整体收益…...

iOS中的类型推断及其在Swift编程语言中的作用和优势

iOS中的类型推断及其在Swift编程语言中的作用和优势 一、iOS中的类型推断 类型推断&#xff08;Type Inference&#xff09;是编程语言编译器或解释器自动推断变量或表达式的类型的能力。在支持类型推断的语言中&#xff0c;开发者在声明变量时无需显式指定其类型&#xff0c…...

工业检测基础-缺陷形态和相机光源选型

缺陷形态与相机选择依据 微小点状缺陷&#xff08;如微小气泡、杂质颗粒&#xff09; 相机选择依据&#xff1a; 分辨率&#xff1a;需要高分辨率相机&#xff0c;无论是面阵还是线阵相机&#xff0c;以确保能够清晰地分辨这些微小的点。对于面阵相机&#xff0c;像元尺寸要小&…...

Python100道练习题

Python100道练习题 BIlibili 1、两数之和 num1 20 num2 22result num1 num2print(result)2、一百以内的偶数 list1 []for i in range(1,100):if i % 2 0:list1.append(i) print(list1)3、一百以内的奇数 # 方法一 list1 [] for i in range(1,100):if i % 2 ! 0:lis…...

2024年华中杯数学建模A题太阳能路灯光伏板的朝向设计问题解题全过程文档及程序

2024年华中杯数学建模 A题 太阳能路灯光伏板的朝向设计问题 原题再现 太阳能路灯由太阳能电池板组件部分&#xff08;包括支架&#xff09;、LED灯头、控制箱&#xff08;包含控制器、蓄电池&#xff09;、市电辅助器和灯杆几部分构成。太阳能电池板通过支架固定在灯杆上端。…...

【JavaWeb后端学习笔记】Java上传文件到阿里云对象存储服务

阿里云对象存储 1、创建阿里云对象存储节点2、上传文件2.1 修改项目配置文件2.2 定义一个Properties类获取配置信息2.3 准备一个alioss工具类2.4 创建注册类&#xff0c;将AliOssUtil 注册成Bean2.5 使用AliOssUtil 工具类上传文件2.6 注意事项 使用阿里云对象存储服务分为以下…...

网盘管理系统

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 设计题目&#xff1a;网盘管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软…...

learn-(Uni-app)跨平台应用的框架

使用 Vue.js 开发所有前端应用的框架&#xff0c;开发者编写一份代码&#xff0c;可发布到iOS、Android、Web&#xff08;包括微信小程序、百度小程序、支付宝小程序、字节跳动小程序、H5、App等&#xff09;等多个平台。 跨平台&#xff1a;Uni-app 支持编译到iOS、Android、W…...

趋同进化与趋异进化的区别及分析方法-随笔03

趋同进化与趋异进化的区别及分析方法 1. 引言 在生物学中&#xff0c;进化是指生物种群随着时间的推移&#xff0c;通过遗传变异、自然选择、基因漂变等机制的作用&#xff0c;逐渐改变其基因型和表型的过程。进化的方式有很多种&#xff0c;其中趋同进化&#xff08;Converg…...

2024年华中杯数学建模B题使用行车轨迹估计交通信号灯周期问题解题全过程文档及程序

2024年华中杯数学建模 B题 使用行车轨迹估计交通信号灯周期问题 原题再现 某电子地图服务商希望获取城市路网中所有交通信号灯的红绿周期&#xff0c;以便为司机提供更好的导航服务。由于许多信号灯未接入网络&#xff0c;无法直接从交通管理部门获取所有信号灯的数据&#x…...

高效查找秘密武器一:位图

有这样的一个问题&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数 中。 那么我们一般会想到这样做的 1.遍历&#xff0c;时间复杂度O(n) 2.排序&#xff08;N*logN&#xff09;&#xff0c…...

自回归模型(AR )

最近看到一些模型使用了自回归方法&#xff0c;这里就学习一下整理一下相关内容方便以后查阅。 自回归模型&#xff08;AR &#xff09; 自回归模型&#xff08;AR &#xff09;AR 模型的引入AR 模型的定义参数的估计方法模型阶数选择平稳性与因果性条件自相关与偏自相关函数优…...

Linux内核 -- Linux驱动从设备树dts文件中读取字符串信息的方法

从Linux设备树读取字符串信息 在Linux内核中&#xff0c;从设备树&#xff08;DTS&#xff09;中读取字符串信息&#xff0c;通常使用内核提供的设备树解析API。这些API主要位于<linux/of.h>头文件中。 常用函数解析 1. of_get_property 获取设备树中的属性。原型:con…...

图片懒加载+IntersectionObserver

通过IntersectionObserver实现图片懒加载 在JavaScript中&#xff0c;图片懒加载可以通过监听滚动事件和计算图片距离视口顶部的距离来实现 在HTML中&#xff0c;将src属性设置为一个透明的1x1像素图片作为占位符&#xff0c;并将实际的图片URL设置为data-src属性。 <img c…...

MySQL的获取、安装、配置及使用教程

一、获取MySQL 官网地址:https://www.mysql.com MySQL产品:企业版(Enterprise)和社区版(Community)社区版是通过GPL协议授权的开源软件&#xff0c;可以免费使用。企业版是需要收费的商业软件 MySQL版本历史:5.0、5.5、5.6、5.7和8.0(最新版本)两种打包版本:MSI(安装版)和ZI…...

Odoo在线python代码开发

《Odoo在线python代码开发从入门到精通》 从简入手&#xff0c;由浅入深&#xff0c;Odoo开发不求人 以实例促理解&#xff0c;举一反三 从Python到Odoo&#xff0c;低代码开发的正解之路 代码视频讲解与代码注释配合&#xff0c;帮助用户真正理解每一句代码的作用 《Odoo在…...

在.NET 6中使用Serilog收集日志

此示例的完整详细信息&#xff1a;https://download.csdn.net/download/hefeng_aspnet/89998498 Serilog 是一个日志库&#xff0c;它提供对文件、控制台和其他几个地方的记录。它易于配置&#xff0c;并且具有干净且易于使用的界面。 Serilog具有无与伦比的输出目的地选择&…...

【D3.js in Action 3 精译_043】5.1 饼图和环形图的创建(中):D3 饼图布局生成器的配置方法

当前内容所在位置&#xff1a; 第五章 饼图布局与堆叠布局 ✔️ 5.1 饼图和环形图的创建 ✔️ 5.1.1 准备阶段&#xff08;上篇&#xff09;5.1.2 饼图布局生成器&#xff08;中篇&#xff09; ✔️5.1.3 圆弧的绘制5.1.4 数据标签的添加 文章目录 5.1.2 饼图布局生成器 The …...

离线安装ollama到服务器

搜了很多教程不满意,弄了半天才弄好&#xff0c;这里记录下&#xff0c;方便以后的人用&#xff0c;那个在线下载太慢&#xff0c;怕不是得下载到明年。 一.从官网下在liunx版的tgz安装包 Releases ollama/ollama (github.com) 查看自己的服务器信息&#xff08;参考 https:/…...

自动化点亮LED灯之程序编写

程序编写&#xff1a; #!/bin/shecho none > /sys/class/leds/led1/triggerecho none > /sys/class/leds/led2/triggerecho none > /sys/class/leds/led3/triggerecho 0 > /sys/class/leds/led1/brightnessecho 0 > /sys/class/leds/led2/brightnessecho 0 >…...

linux 系列服务器 高并发下ulimit优化文档

系统输入 ulimit -a 结果如下 解除或提高 Linux 系统的最大进程数 在高并发场景中&#xff0c;合理设置 Linux 系统的最大进程数对于提升服务器性能至关重要。以下是具体步骤&#xff1a; 临时修改 ulimit 设置 可以通过 ulimit 命令临时调整当前会话的最大进程数。 查看当前…...