CS61B | lab4 git一些命令
lab4 git命令学习,基于git bash
一些命令
- pwd print working directory(打印当前工作目录)
- touch 是一个在 Linux、macOS、Git Bash 等终端中常用的命令,作用是:
创建一个空文件,或者更新一个文件的最后修改时间。
windows中无法使用,git bash中可以使用
- cat + 文件名 获取内容
cp pbj.txt ./egg.txt
是一个 复制文件 的命令,用于在 Git Bash、Linux、macOS 终端中。
✅ 命令解释:
cp:copy 的缩写,表示复制文件或目录。pbj.txt:源文件,即你要复制的文件。./egg.txt:目标文件名,也就是复制后的新文件。
这里的 ./ 表示“当前目录”。
- git add * 添加目录中所有内容
- 如果你执行了:
git commit
却没有加 -m "提交信息",Git 会自动打开一个默认的文本编辑器(通常是 vim 或 nano),让你手动填写提交信息。
😥 如果你进了一个陌生界面,不知道怎么退出 —— 不用慌!下面是回退(或退出)的方式:
✅ 你看到的是哪种界面?按下面对应操作:
🎩 一、如果是 vim 界面(最常见)
看起来像这样,底部没有提示快捷键,只能用键盘操作:
# Please enter the commit message for your changes...
~
~
~
-- INSERT --
❌ 想“取消提交”并退出:
按键依次输入:
Esc
:q!
然后回车,即可退出,不会提交。
- git checkout master
git checkout master是一个Git命令,用于将当前工作目录切换到名为master的分支。以下是关于这个命令的详细说明:
命令作用
当你执行 git checkout master 时,Git会执行以下操作:
- 切换分支:将HEAD指针从当前分支指向
master分支。 - 更新工作目录:使工作目录中的文件与
master分支的最新提交保持一致。
git checkout fe003c05117cd27ca99d586fb981abe9e51cd7be 是一个用于切换到特定提交(commit)的Git命令。以下是对这个命令的详细说明:
命令作用
当你执行 git checkout <commit-hash> 时,Git会执行以下操作:
- 分离HEAD:将HEAD指针从当前分支脱离,直接指向指定的提交(即
fe003c0...)。 - 更新工作目录:使工作目录中的文件与该提交时的状态一致。
此时你处于 分离HEAD状态,意味着你可以查看历史版本,但任何修改不会被记录到现有分支中。
echo "test test" >> pbj.txt是一个在 Linux、macOS 或 Windows PowerShell 中使用的命令组合,用于将文本内容追加到文件中。以下是对这个命令的详细解析:
命令组成
这个命令由三部分组成:
echo:是一个 shell 命令,用于在终端输出文本。"test test":是要输出的文本内容,用双引号包裹以避免特殊字符被 shell 解释。>> pbj.txt:是一个重定向操作符,用于将echo的输出追加到名为pbj.txt的文件中。
重定向符号说明
>:覆盖写入(如果文件已存在,会清空原有内容并写入新内容)。>>:追加写入(在文件末尾添加新内容,保留原有内容)。
示例效果
假设 pbj.txt 文件原本内容为:
Hello, world!
执行 echo "test test" >> pbj.txt 后,文件内容变为:
Hello, world!
test test
常见用途
- 创建或编辑配置文件:例如向
.bashrc中添加环境变量。 - 记录日志:将测试信息追加到日志文件。
- 批量生成文件内容:例如生成测试数据。
git checkout dd477f37b7c97f22868aa7482e2391fbced60bf6 -- proj0
关键点:
dd477f37...:这是一个提交的哈希值(commit hash),用于唯一标识某个历史版本。--:分隔符,用于区分「提交哈希」和「文件路径」。proj0:需要检出的文件或目录路径(例如,项目中的proj0目录或文件)。
命令作用
该命令会将指定提交中的 proj0 文件/目录恢复到当前工作目录,而不影响其他文件。例如:
- 如果
proj0是目录,则恢复整个目录的内容。 - 如果
proj0是文件,则仅恢复该文件。
使用场景
-
恢复误删除的文件:
# 从历史提交中恢复被误删的 proj0 文件 git checkout dd477f3 -- proj0 -
对比不同版本的文件:
# 临时查看历史版本中的 proj0 文件 git checkout dd477f3 -- proj0 # 修改后,可将 proj0 作为新版本提交
注意事项
- 谨慎操作:该命令会覆盖当前工作目录中的同名文件,可能导致未提交的修改丢失。
- 分离头指针:命令不会切换分支,只是临时检出特定提交的内容。
总结
这个命令本质是一个精确的文件恢复工具,允许你从任意历史版本中提取特定文件,而不影响其他代码。
git checkout -b WithSwiss aa45fbd
的意思是:
🚀 基于提交
aa45fbd创建并切换到一个新分支WithSwiss。
🧠 命令详解:
| 部分 | 含义 |
|---|---|
git checkout |
用来切换分支或恢复文件。 |
-b WithSwiss |
创建一个新分支叫 WithSwiss 并立刻切换到它。 |
aa45fbd |
指定一个已有的提交(commit),通常是一个完整或部分的 SHA-1 哈希。 |
✅ 命令背后做了什么?
这条命令相当于以下两步操作的合并:
-
创建一个新分支:
git branch WithSwiss aa45fbd -
切换到该分支:
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 的基础上走出了一条新“路线”。

浙公网安备 33010602011771号