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

news2025/1/10 3:22:34
  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.txt
     1 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”。
    例如:

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

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

相关文章

Sui 主网升级至 V1.38.3

Sui 主网现已升级至 V1.38.3 版本&#xff0c;同时协议升级至 69 版本。请开发者及时关注并调整&#xff01; 其他升级要点如下所示&#xff1a; 协议 #20199 在共识快速路径投票中设置允许的轮次数量。 节点&#xff08;验证节点与全节点&#xff09; #20238 为验证节点…

【AI系统】低比特量化原理

低比特量化原理 计算机里面数值有很多种表示方式&#xff0c;如浮点表示的 FP32、FP16&#xff0c;整数表示的 INT32、INT16、INT8&#xff0c;量化一般是将 FP32、FP16 降低为 INT8 甚至 INT4 等低比特表示。 模型量化则是一种将浮点值映射到低比特离散值的技术&#xff0c;可…

项目文章 | RNA-seq+WES-seq+机器学习,揭示DNAH5是结直肠癌的预后标志物

肿瘤突变负荷&#xff08;TMB&#xff09;已成为预测结直肠癌&#xff08;CRC&#xff09;患者预后和对免疫治疗反应的关键生物标志物。然而&#xff0c;全外显子测序&#xff08;WES-seq&#xff09;作为TMB评估的金标准&#xff0c;成本高且耗时。此外&#xff0c;高TMB患者之…

【NLP修炼系列之Bert】Bert多分类多标签文本分类实战(附源码下载)

引言 今天我们就要用Bert做项目实战&#xff0c;实现文本多分类任务和我在实际公司业务中的多标签文本分类任务。通过本篇文章&#xff0c;可以让想实际入手Bert的NLP学习者迅速上手Bert实战项目。 1 项目介绍 本文是Bert文本多分类和多标签文本分类实战&#xff0c;其中多分…

【CSS in Depth 2 精译_069】11.3 利用 OKLCH 颜色值来处理 CSS 中的颜色问题(上)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 11 章 颜色与对比】 ✔️ 11.1 通过对比进行交流 11.1.1 模式的建立11.1.2 还原设计稿 11.2 颜色的定义 11.2.1 色域与色彩空间11.2.2 CSS 颜色表示法 11.2.2.1 RGB…

基础算法——搜索与图论

搜索与图论 图的存储方式2、最短路问题2.1、Dijkstra算法&#xff08;朴素版&#xff09;2.2、Dijkstra算法&#xff08;堆优化版&#xff09;2.3、Bellman-Ford算法2.4、SPFA求最短路2.5、SPFA判负环2.6、Floyd算法 图的存储方式 2、最短路问题 最短路问题可以分为单源最短路…

IDEA创建Spring Boot项目配置阿里云Spring Initializr Server URL【详细教程-轻松学会】

1.首先打开idea选择新建项目 2.选择Spring Boot框架(就是选择Spring Initializr这个) 3.点击中间界面Server URL后面的三个点更换为阿里云的Server URL Idea中默认的Server URL地址&#xff1a;https://start.spring.io/ 修改为阿里云Server URL地址&#xff1a;https://star…

Git_如何更改默认路径

网上搜了一堆都不好使&#xff0c;其实可以直接使用git bash输入命令来解决 打开 Git Bash&#xff1a;首先打开 Git Bash 终端&#xff0c;这是一个类似于命令提示符的窗口&#xff0c;可在其中执行 Git 命令。设置 Git 默认存储路径&#xff1a;使用 git config 命令来修改 …

计算机毕业设计Python房价预测 房屋推荐 房价可视化 链家爬虫 房源爬虫 房源可视化 卷积神经网络 大数据毕业设计 机器学习 人工智能 AI

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

AndroidAutoSize实战教程:今日头条屏幕适配方案详解

如何在项目中结合 AndroidAutoSize 来进行今日头条屏幕适配&#xff0c;我会具体讲解如何用 AndroidAutoSize 实现屏幕适配&#xff0c;并结合 Kotlin 代码举例分析。 通过 AndroidAutoSize 库来实现屏幕适配&#xff0c;确保在不同的屏幕尺寸、分辨率、密度下&#xff0c;应用…

【HarmonyOS】层级轮播卡片效果

【HarmonyOS】层级轮播卡片效果 一、功能效果&#xff1a; 1.上下堆叠由大到小的卡片层叠效果。 2.上层卡片可手势左右滑动&#xff0c;自动左滑动。 3.三层卡片随滑动&#xff0c;内容进行依次切换。 二、开发思路 【完整代码见章节三】 1.最上层使用swiper进行轮播效果…

Postman自定义脚本Pre-request-script以及Test

这两个都是我们进行自定义script脚本的地方&#xff0c;分别是在请求执行的前后运行。 我们举两个可能经常运用到的场景。 (一)请求A先执行&#xff0c;请求B使用请求A响应结果作为参数。如果我们不用自定义脚本&#xff0c;可能得先执行请求A&#xff0c;然后手动复制响应结果…

一些引入依赖,提示引入方式报错的问题

背景 当我们使用gulp自动化处理文件的时候&#xff0c;难免会遇到需要按照一定条件过滤的需求&#xff0c;这里博主所遇到问题是&#xff0c;通过文件内容中是否包含 某一串字符串 决定过滤当前的文件 比如&#xff1a; 碰到文件中包含注释 * replace-note 此文件未被引用 ,那…

R语言 | 峰峦图 / 山脊图

目的&#xff1a;为展示不同数据分布的差异。 1. ggplot2 实现 # 准备数据 datmtcars[, c("mpg", "cyl")] colnames(dat)c("value", "type") head(dat) # value type #Mazda RX4 21.0 6 #Mazda RX4 Wag …

6月份stable diffusion animatediff等插件使用指南,又来更新了

插件一直会更新&#xff0c;包含了基本市面上流行的90%插件&#xff0c;好用的插件更是不会错过&#xff0c;往期插件请看往期文章&#xff0c;如果你没有时间一直关注sd更新的进展&#xff0c;请关注我&#xff0c;一个月用几个小时看一下我的文章&#xff0c;最短时间跟进sd。…

jmeter配置

单接口运行没问题&#xff0c;但是批量执行100个线程数发现总是提示请求不合法 最后发现 需要将配置改成 正好回归一下这个配置&#xff1a; Ramp-Up时间&#xff08;秒&#xff09;的定义&#xff1a; Ramp-Up时间是指在JMeter测试中&#xff0c;所有指定的线程&#xff08…

WPF中的VisualState(视觉状态)

以前在设置控件样式或自定义控件时&#xff0c;都是使用触发器来进行样式更改。触发器可以在属性值发生更改时启动操作。 像这样&#xff1a; <Style TargetType"ListBoxItem"><Setter Property"Opacity" Value"0.5" /><Setter …

如何利用Java爬虫获得商品类目

在当今数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。获取和分析数据的能力对于任何希望在市场上保持竞争力的企业来说都是至关重要的。对于电子商务平台和市场研究公司而言&#xff0c;获取商品类目数据尤为重要&#xff0c;因为这些数据可以帮助他们更好地理解市场…

【Linux】程序的编译过程

程序的翻译过程 预处理&#xff08;头文件展开&#xff0c;条件编译&#xff0c;宏替换&#xff0c;去注释&#xff09;编译 &#xff1a;把c变成汇编语言汇编 &#xff1a;把汇编变成二进制&#xff08;不可执行&#xff0c;二进制目标文件&#xff09;链接 &#xff1a;把自…

#渗透测试#SRC漏洞挖掘# 操作系统-windows系统番外练习

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…