MIT-Missing Semester_Topic 6:Version Control (Git) 练习题
文章目录
- 练习一
- 练习二
- 练习三
- 练习四
- 练习五
- 练习六
- 练习七
练习一
若还没有 Git 的相关经验,阅读 Pro Git 的前几章或诸如 Learn Git Branching 的相关教程,并在学习的同时从 Git 的数据模型(data model)的角度思考各 Git 命令。
老师非常建议阅读 Pro Git。
练习二
clone
该课程(Missing Semester)网站的仓库,随后:
- 以图的形式展现其版本历史
- 运用
git log
加一个参数,找到修改README.md
的最后一人- 运用
git blame
与git show
得到_config.yml
中collections:
这一行最后一次修改的commit
信息
第 1、3 小题在 lecture 中演示过,而第 2 小题据提示比较简单。
-
用
git clone <URL> <folder>
*(必备基础技能)*克隆课程仓库:cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise$ git clone https://github.com/missing-semester/missing-semester missing-semester Cloning into 'missing-semester'... remote: Enumerating objects: 2344, done. remote: Counting objects: 100% (1487/1487), done. remote: Compressing objects: 100% (543/543), done. remote: Total 2344 (delta 980), reused 964 (delta 941), pack-reused 857 Receiving objects: 100% (2344/2344), 15.61 MiB | 1.28 MiB/s, done. Resolving deltas: 100% (1392/1392), done.
-
不妨运用 Topic 5 所讲解的*别名 (alias)*知识,简化
git log
的相关图示法命令:cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/test/demo$ alias gl='git log --all --graph --decorate' cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/test/demo$ alias gl1='gl --oneline'
**提示:**可以在配置文件
~/.bashrc
中设定默认的alias
。当然,本练习做到后面(练习五)发现可以直接修改 Git 的配置文件.gitconfig
。-
gl
:包含详细commit
的信息cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/missing-semester$ gl > gl_res.log cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/missing-semester$ vim gl_res.log
结果极长,共 4218 行。
-
gl1
:缩略信息,每个commit
仅一行* d38f585 (HEAD -> master, origin/master, origin/HEAD) Merge branch 'alexandr-gnrk/update-jupyter-binding' |\ | * f600f32 Update Vim binding for Jupyter |/ * 2253e4e Switch recommended app to Rectangle * 18ee93c Ignore Reddit URLs when checking links * 2ab1b78 Merge branch 'alkock/master' |\ | * 98d90f8 added german translation |/ * bd75a78 Fix broken links * 7330a25 Merge branch 'fipachu/git-aliases' |\ | * 6fc734b Add more useful overview of Git aliases |/ * f45234f Merge branch 'Nikitaz1410/patch-2' ...
部分较新的历史如上,共 885 行。
提示:当
git log
等其它git
命令的信息较长时会显示前一部分信息并自动进入某种 “交互” 模式,上下移动方法同 Vim,H 键显示帮助,Q 键退出。 -
-
考虑使用 Topic 2 提及的tldr
工具查询所需用法:cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/missing-semester$ tldr git log...Show a history of commits.More information: https://git-scm.com/docs/git-log....- Show the history of a particular file or directory, including differences:git log -p path/to/file_or_directory...
由此得知git log -p
+ 文件/文件夹后来发现不应该如上加上
-p
flag,其会显示所有 “differences”,直接加文件即可:cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/missing-semester$ git log README.md commit 9ef9db72211fefc00caaa7133b35dda4a99acccf Author: Anish Athalye <me@anishathalye.com> Date: Thu Oct 27 20:28:41 2022 -0400Add Docker setup for easier development ...
因此显然是授课老师 Anish Athalye 最后修改了
README.md
。 -
lecture 中演示了。先
git blame
+ 文件并找到目标信息对应的 commit,随后git show <commit>
得到其相关信息:cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/missing-semester$ git blame _config.yml ... a88b4eac (Anish Athalye 2020-01-17 15:26:30 -0500 18) collections: a88b4eac (Anish Athalye 2020-01-17 15:26:30 -0500 19) '2019': ...
⇒ \Rightarrow ⇒ commit 哈希值为
a88b4eac
cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/missing-semester$ git show a88b commit a88b4eac326483e29bdac5ee0a39b180948ae7fc Author: Anish Athalye <me@anishathalye.com> Date: Fri Jan 17 15:26:30 2020 -0500Redo lectures as a collection ...
所以对应 commit 的信息为 “Redo lectures as a collection”
练习三
为应对误将不应被 Git 管理的内容,如某大文件或敏感信息,commit 的情况,学习 Github 上的官方文档,随后模拟上述情形下删除目标文件。
学习文章知,可以使用两种工具(均需安装):
git filter-repo
- BFG Repo-Cleaner(更方便高效)
根据相关说明操作即可。
练习四
修改某仓库中的文件,随后依次
git stash
、git log --all --oneline
、git stash pop
巩固git stash
的技能,并思考其可能适用于在何种情况。
stash vt. 藏匿; 隐藏; 存放; 贮藏(百度翻译)
lecture 中也演示过 git stash
,其可 “隐藏” 所做的修改,并以 git stash pop
恢复。
-
修改
README.md
之后git stash
:cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/test_git_stash$ echo '**REMOVED**' > README.md cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/test_git_stash$ git status On branch master Your branch is up to date with 'origin/master'.Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: README.mdno changes added to commit (use "git add" and/or "git commit -a")
-
git log
:cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/test_git_stash$ git log --all --oneline 7fca419 (refs/stash) WIP on master: d38f585 Merge branch 'alexandr-gnrk/update-jupyter-binding' 088c991 index on master: d38f585 Merge branch 'alexandr-gnrk/update-jupyter-binding' d38f585 (HEAD -> master, origin/master, origin/HEAD) Merge branch 'alexandr-gnrk/update-jupyter-binding'` ...
可以发现在
HEAD
commit 之上多了两条 commit!且最后一条为refs/stash
。 -
用
git stash pop
恢复:cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/test_git_stash$ git stash pop On branch master Your branch is up to date with 'origin/master'.Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: README.mdno changes added to commit (use "git add" and/or "git commit -a") Dropped refs/stash@{0} (7fca419c92d8bff936036a4ca32b277d11c1849a) cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/test_git_stash$ git log --all --oneline | head -10 d38f585 Merge branch 'alexandr-gnrk/update-jupyter-binding' ...
直接跳出了
README.md
被更新的提示,且此时git log
已无之前新增的 commit 记录。(说明:上面的
head
命令能得到输入文件的开头若干行,可见 Missing Semester - Topic 1 中关于类似的tail
命令的讲解)
★ git stash
应该在修改文件后又想看其之前的内容时非常有用。若无 git stash
,恐怕只能先将文件存在别处,随后 git checkout -- <file>
丢弃修改。
练习五
在 Git 的配置文件
~/.gitconfig
中创建 alias,以便使用git graph
便能得到git log --all --graph --decorate --oneline
的结果。根据 https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases 用命令行创建 alias 亦可。
在 .gitconfig
文件中加入:
[alias]graph = log --all --graph --decorate --oneline
测试如下:
cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/missing-semester$ diff <(git graph) <(git log --all --graph --decorate --oneline)
cowbby@LAPTOP-UD6KDALFP:~/Missing Semester/6_Version Control(git)/exercise/missing-semester$
可见两者输出完全一样。
练习六
You can define global ignore patterns in
~/.gitignore_global
after runninggit config --global core.excludesfile ~/.gitignore_global
. Do this, and set up your global gitignore file to ignore OS-specific or editor-specific temporary files, like.DS_Store
.
练习七
Fork the repository for the class website, find a typo or some other improvement you can make, and submit a pull request on GitHub (you may want to look at this). Please only submit PRs that are useful (don’t spam us, please!). If you can’t find an improvement to make, you can skip this exercise.
相关文章:
MIT-Missing Semester_Topic 6:Version Control (Git) 练习题
文章目录 练习一练习二练习三练习四练习五练习六练习七 练习一 若还没有 Git 的相关经验,阅读 Pro Git 的前几章或诸如 Learn Git Branching 的相关教程,并在学习的同时从 Git 的数据模型(data model)的角度思考各 Git 命令。 老师…...
OpenHarmony轻量级内核-LiteOS-M
OpenHarmony轻量级内核 思维导图 https://download.csdn.net/download/lanlingxueyu/88816723 概述 内核是一人操作系统的运算核心,决定着系统的性能和稳定性。它是基于硬件的第一层软件扩充,提供操作系统的基本功能,是操作系统工作的基础。它负责管理系统的进程、内存、…...

TCP 传输控制协议——详细
目录 1 TCP 1.1 TCP 最主要的特点 1.2 TCP 的连接 TCP 连接,IP 地址,套接字 1.3 可靠传输的工作原理 1.3.1 停止等待协议 (1)无差错情况 (2)出现差错 (3)确认丢失和确认迟到…...

ArcGIS学习(六)地理数据库
ArcGIS学习(六)地理数据库 上个任务我们讲了一个非常重要的知识点一一坐标系。这个任务我们带来另外一个很重要的知识点一一地理数据库。 地理数据库的内容相比于坐标系简单很多! 首先,先让我们来学习下地理数据库的理论。 ArcGIS 中的地理数据库(Geodatabase)是一个用…...
保研机试算法训练个人记录笔记(四)——哈希算法
目录 两数之和 字母异位词分组 最长连续序列 力扣热题100——哈希算法 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答…...
ChatGPT实战100例 - (14) 打造AI编程助手 Code Copilot
文章目录 ChatGPT实战100例 - (14) 打造AI编程助手 Code Copilot一、Code Copilot AI编程助手二、制作代码生成器2.1 定义生成器框架2.2 从现有代码提取代码模板三、进行代码优化ChatGPT实战100例 - (14) 打造AI编程助手 Code Copilot 一、Code Copilot AI编程助手 Code Copi…...

表单标记(html)
前言 发现input的type属性还是有挺多的,这里把一些常用的总结一下。 HTML 输入类型 (w3school.com.cn)https://www.w3school.com.cn/html/html_form_input_types.asp text-文本 文本输入,如果文字太长,超出的部分就不会显示。 定义供文本输入的单行…...

Linux文件和目录管理
目录基础 Linux操作系统以目录的方式来组织和管理系统中的所有文件。所谓的目录,就是将所有文件的说明信息采用树状结构组织起来。每个目录节点之下会有文件和子目录。 所有一切都从 ‘根’ 开始,用 ‘/’ 代表, 并且延伸到子目录。 bin:B…...
【go】gorm\xorm\ent事务处理
文章目录 1 gorm1.1 开启事务1.2 执行操作1.3 提交或回滚 2 xorm2.1 开启事务2.2 执行操作2.3 提交或回滚 3 ent3.1 开启事务3.2 执行操作3.3 提交或回滚 前言:本文介绍golang三种orm框架对数据库事务的操作 1 gorm Begin开启事务 tx *gorm.DB 1.1 开启事务 tx :…...

【数据分享】1929-2023年全球站点的逐月平均风速(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全球气象站…...
IP地址详解
IP地址是互联网协议(Internet Protocol)用于标识并定位网络中主机(如计算机、服务器、路由器等)的一串数字。它是一个32位的二进制数,通常以四个数字(每个数字范围为0-255)的形式显示࿰…...

Python爬虫http基本原理#2
Python爬虫逆向系列(更新中):http://t.csdnimg.cn/5gvI3 HTTP 基本原理 在本节中,我们会详细了解 HTTP 的基本原理,了解在浏览器中敲入 URL 到获取网页内容之间发生了什么。了解了这些内容,有助于我们进一…...

Web Services 服务 是不是过时了?创建 Web Services 服务实例
Web Services 是不是过时了? 今天是兔年最后一天,先给大家拜个早年 。 昨天上午视频面试一家公司需要开发Web Services 服务,这个也没有什么,但还需要用 VB.net 开发。这个是多古老的语言了,让我想起来了 10年 前 写 …...
redis单线程还快的原因
1. 内存存储和高效数据结构: 内存存储: Redis将数据存储在内存中,因此可以实现非常高的读写速度,而无需频繁的磁盘I/O操作。 高效数据结构: Redis内置了丰富且高效的数据结构,如字符串、哈希表、列表、集合…...

【flutter】报错 cmdline-tools component is missing
在flutterSDK目录下,双击flutter_console.bat,调出命令行。 输入flutter doctor,如果第三个诊断为[x],报cmdline-tools component is missing错(我这已经修改好了,所以是勾了),那就可…...

以用户为中心,酷开科技荣获“消费者服务之星”
在企业顺应消费升级的道路中,企业自身不仅要着力强化对于消费者服务意识的提升,并且要树立诚信自律的行业示范带头作用,助力消费环境稳中向好,不断满足人民群众对美好生活的期待。企业的发展需要消费者的认可,酷开科技…...

Days 27 ElfBoard 板 AltiumDesigner 相同电路快速布局布线
在进行设计开发的时候,总会遇到相同的电路,或者模块,这些电路可以使用相同的布局和走线,例如 DC-DC 电源、网口 PHY 电路部分。这类型的电路,我们可以采用AltiumDesigner 中的 Room 进行布局和布线的快速复制ÿ…...

除夕快乐(前端小烟花)
家人们,新的一年好运常在,愿大家在新的一年里得偿所愿,发财暴富,愿大家找到属于自己的那个公主,下面就给大家展示一下给公主的烟花 前端烟花 新的一年,新的挑战,愿我们不忘初心,砥砺…...

fast.ai 深度学习笔记(二)
深度学习 2:第 1 部分第 4 课 原文:medium.com/hiromi_suenaga/deep-learning-2-part-1-lesson-4-2048a26d58aa 译者:飞龙 协议:CC BY-NC-SA 4.0 来自 fast.ai 课程的个人笔记。随着我继续复习课程以“真正”理解它,这…...
风行智能电视G32Y 强制刷机升级方法,附刷机升级数据MstarUpgrade.bin
升级步骤: 1、下载刷机数据,如是压缩包,需要先解压,然后将刷机bin格式的文件重命名为MstarUpgrade.bin 2、将此文件放到U盘根目录 (U盘格式FAT32,单分区,建议4G的优盘刷机成功率高)…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...