CS61B | lab4 git一些命令

lab4 git命令学习,基于git bash

一些命令

  1. pwd print working directory(打印当前工作目录)

  1. touch 是一个在 Linux、macOS、Git Bash 等终端中常用的命令,作用是:
    创建一个空文件,或者更新一个文件的最后修改时间。
    windows中无法使用,git bash中可以使用

  1. cat + 文件名 获取内容

cp pbj.txt ./egg.txt

是一个 复制文件 的命令,用于在 Git Bash、Linux、macOS 终端中。

✅ 命令解释:

  • cp:copy 的缩写,表示复制文件或目录。
  • pbj.txt:源文件,即你要复制的文件。
  • ./egg.txt:目标文件名,也就是复制后的新文件。

这里的 ./ 表示“当前目录”。


  1. git add * 添加目录中所有内容

  1. 如果你执行了:
git commit

却没有加 -m "提交信息",Git 会自动打开一个默认的文本编辑器(通常是 vimnano),让你手动填写提交信息。

😥 如果你进了一个陌生界面,不知道怎么退出 —— 不用慌!下面是回退(或退出)的方式:

✅ 你看到的是哪种界面?按下面对应操作:

🎩 一、如果是 vim 界面(最常见)

看起来像这样,底部没有提示快捷键,只能用键盘操作:

# Please enter the commit message for your changes...
~
~
~
-- INSERT --

❌ 想“取消提交”并退出:

按键依次输入:

Esc
:q!

然后回车,即可退出,不会提交。


  1. git checkout master
    git checkout master 是一个Git命令,用于将当前工作目录切换到名为 master 的分支。以下是关于这个命令的详细说明:

命令作用

当你执行 git checkout master 时,Git会执行以下操作:

  1. 切换分支:将HEAD指针从当前分支指向 master 分支。
  2. 更新工作目录:使工作目录中的文件与 master 分支的最新提交保持一致。

git checkout fe003c05117cd27ca99d586fb981abe9e51cd7be 是一个用于切换到特定提交(commit)的Git命令。以下是对这个命令的详细说明:

命令作用

当你执行 git checkout <commit-hash> 时,Git会执行以下操作:

  1. 分离HEAD:将HEAD指针从当前分支脱离,直接指向指定的提交(即 fe003c0...)。
  2. 更新工作目录:使工作目录中的文件与该提交时的状态一致。

此时你处于 分离HEAD状态,意味着你可以查看历史版本,但任何修改不会被记录到现有分支中。


  1. echo "test test" >> pbj.txt 是一个在 Linux、macOS 或 Windows PowerShell 中使用的命令组合,用于将文本内容追加到文件中。以下是对这个命令的详细解析:

命令组成

这个命令由三部分组成:

  1. echo:是一个 shell 命令,用于在终端输出文本。
  2. "test test":是要输出的文本内容,用双引号包裹以避免特殊字符被 shell 解释。
  3. >> pbj.txt:是一个重定向操作符,用于将 echo 的输出追加到名为 pbj.txt 的文件中。

重定向符号说明

  • >:覆盖写入(如果文件已存在,会清空原有内容并写入新内容)。
  • >>:追加写入(在文件末尾添加新内容,保留原有内容)。

示例效果

假设 pbj.txt 文件原本内容为:

Hello, world!

执行 echo "test test" >> pbj.txt 后,文件内容变为:

Hello, world!
test test

常见用途

  1. 创建或编辑配置文件:例如向 .bashrc 中添加环境变量。
  2. 记录日志:将测试信息追加到日志文件。
  3. 批量生成文件内容:例如生成测试数据。

git checkout dd477f37b7c97f22868aa7482e2391fbced60bf6 -- proj0

关键点

  1. dd477f37...:这是一个提交的哈希值(commit hash),用于唯一标识某个历史版本。
  2. --:分隔符,用于区分「提交哈希」和「文件路径」。
  3. proj0:需要检出的文件或目录路径(例如,项目中的 proj0 目录或文件)。

命令作用

该命令会将指定提交中的 proj0 文件/目录恢复到当前工作目录,而不影响其他文件。例如:

  • 如果 proj0 是目录,则恢复整个目录的内容。
  • 如果 proj0 是文件,则仅恢复该文件。

使用场景

  1. 恢复误删除的文件

    # 从历史提交中恢复被误删的 proj0 文件
    git checkout dd477f3 -- proj0
    
  2. 对比不同版本的文件

    # 临时查看历史版本中的 proj0 文件
    git checkout dd477f3 -- proj0
    # 修改后,可将 proj0 作为新版本提交
    

注意事项

  • 谨慎操作:该命令会覆盖当前工作目录中的同名文件,可能导致未提交的修改丢失。
  • 分离头指针:命令不会切换分支,只是临时检出特定提交的内容。

总结

这个命令本质是一个精确的文件恢复工具,允许你从任意历史版本中提取特定文件,而不影响其他代码。


git checkout -b WithSwiss aa45fbd

的意思是:

🚀 基于提交 aa45fbd 创建并切换到一个新分支 WithSwiss

🧠 命令详解:

部分 含义
git checkout 用来切换分支或恢复文件。
-b WithSwiss 创建一个新分支叫 WithSwiss 并立刻切换到它。
aa45fbd 指定一个已有的提交(commit),通常是一个完整或部分的 SHA-1 哈希。

✅ 命令背后做了什么?

这条命令相当于以下两步操作的合并:

  1. 创建一个新分支

    git branch WithSwiss aa45fbd
    
  2. 切换到该分支

    git checkout WithSwiss
    

📝 使用场景举例:

你可能在查看项目历史时发现 aa45fbd 是一个重要的提交,你想基于它做新实验或者尝试新的方向,于是你就用:

git checkout -b WithSwiss aa45fbd

来从那个历史点开辟新分支。

✅ 最终结果:

  • 创建了一个叫 WithSwiss 的分支;
  • 这个分支的起点是 aa45fbd 提交;
  • 你现在正在这个新分支上,Git HEAD 指针已经指向它。

🧱 场景背景(操作前)

你当前的 Git 分支结构可能如下(例如你在 main 分支上):

A -- B -- C -- D  (main, HEAD)
            ↑
         aa45fbd

其中:

  • 每个字母(A、B、C、D)表示一个提交(commit);
  • aa45fbd 是指向 C 的哈希(简写);
  • 当前你在 main 分支上;
  • HEAD 是 Git 当前指向的位置,表示你在哪个分支或提交上工作。

🛠 执行命令:

git checkout -b WithSwiss aa45fbd

✅ 操作后结构如下:

A -- B -- C -- D  (main)
           ↑
           │
           └── (WithSwiss, HEAD)

说明:

  • 创建了一个新分支 WithSwiss,从 C(即 aa45fbd)分出来;
  • 然后你切换到了这个新分支,所以 HEAD 现在指向 WithSwiss
  • main 保持不变,仍然指向 D

🔁 接下来你在 WithSwiss 上提交新内容:

如果你再提交一次:

git commit -m "New work on WithSwiss"

Git 树结构将变成这样:

A -- B -- C -- D         (main)
           │
           └── E         (WithSwiss, HEAD)

你就在 C 的基础上走出了一条新“路线”。

posted @ 2025-06-11 16:10  粉色奶龙东京阿诺  阅读(54)  评论(0)    收藏  举报