交互式学习工具

Git 命令速查手册

您日常 Git 工作流程的得力助手,快速查找所需命令,告别遗忘烦恼。

仓库设置与基本操作

开启一个新项目或获取一个现有项目副本的起点。

git init

想让 Git 开始管理你的项目文件夹?进去敲下这个命令,它就会马上变身为一个“版本控制库”,准备好记录你的一举一动。

使用示例

Terminal
git init
git clone <url>

在 GitHub 或其他地方看到一个超酷的项目?用这个命令就能把它连同所有的历史记录,原封不动地“克隆”一份到你的电脑上,让你马上就能开始探索。

使用示例

Terminal
git clone https://github.com/user/repo.git

日常工作流

每天你都会用到的核心三部曲:检查状态、打包修改、提交记录。

git status

就像给你的项目做一次“体检”,它会告诉你哪些文件被修改了、哪些是新来的,让你对当前的工作状态一清二楚。

使用示例

Terminal
git status
git add <file>

改完代码后,你需要告诉 Git:“嘿,这些修改我要了!” 这个命令就是帮你做这件事的。可以把它想象成打包行李,把你想要保存的改动先放进一个“暂存箱”里。用 `git add .` 可以省事儿地把所有修改一次性都放进去。

使用示例

Terminal
git add .
git commit -m "<message>"

把你放在“暂存箱”里的所有修改,贴上一张写有总结的“标签”,然后正式存入你的本地“版本历史档案馆”。这就像在游戏里创建了一个“存档点”,以后随时可以读档回来。

使用示例

Terminal
git commit -m "feat: 实现用户登录功能"

处理当前改动

管理和恢复文件的修改,以及文件的移动和删除等操作。

git add <file>

把你想要保存的修改“打包”进暂存区,为下一步的提交做准备。你可以一次只 `add` 一个文件,也可以用 `.` 把所有修改都加上。

使用示例

Terminal
git add .
git mv <old-path> <new-path>

想给文件改个名或者搬个家?用这个命令就对了,Git 会聪明地帮你搞定,并且知道这只是一次移动,而不是“删了旧的、建了新的”。

使用示例

Terminal
git mv old-file.txt new-file.txt
git restore <file>

代码改乱了或不小心删了东西?别慌!这个命令就是你的“后悔药”,能一键撤销你对某个文件做的所有本地修改,让它瞬间回到改动之前的样子。

使用示例

Terminal
git restore README.md
git rm <file>

下定决心要和某个文件说再见?用这个命令来删除它,Git 不仅会帮你从项目中移除它,还会记下这次“断舍离”,让你的项目保持清爽。

使用示例

Terminal
git rm temp-file.txt

检查历史与状态

显示提交日志,查看提交、工作区等之间的变更,以及显示工作区状态。

git log

想看看你的项目是怎么一步步变成现在这个样子的吗?这个命令就像是翻阅项目的“成长日记”,它会把每一次提交(存档点)的作者、时间和说明都告诉你。

git status

就像给你的项目做一次“体检”,它会告诉你哪些文件被修改了、哪些是新来的,让你对当前的工作状态一清二楚。

git diff

好奇自己刚才到底改了哪些代码?这个命令就是你的“代码放大镜”,它会逐行告诉你,相比上次提交,你都增加了、删除了或修改了哪些内容,让你对自己的改动了如指掌。

git show <object>

想知道某一次具体的提交(存档点)到底做了些什么惊天动地的大事?用这个命令,Git 就会把那次提交的详细信息和所有代码变动都展示给你看。

使用示例

Terminal
git show a1b2c3d
git grep <pattern>

想在成千上万行代码里找到某个函数或变量?这个命令是专为程序员打造的超级搜索工具,它能帮你快速在当前项目中所有被追踪的文件里查找指定的文本内容。

使用示例

Terminal
git grep "Error"
git bisect <subcommand>

项目里突然出现一个 bug,但翻了半天历史记录也不知道是哪次提交把它带进来的?这个命令是你的“Bug 侦探”,它会用“二分查找”的聪明方法,一步步帮你缩小范围,快速定位到那个引入问题的“肇事提交”。

使用示例

Terminal
git bisect start; git bisect bad; git bisect good v1.0

分支、标记与历史修改

管理分支,提交更改,合并开发历史,以及重置当前 HEAD 到指定状态。

git branch

分支就像是你的代码世界的“平行宇宙”。你可以创建一个新分支,在里面随心所欲地尝试新功能或修复 bug,完全不用担心会搞乱主线(`main`)上的稳定代码。这个命令就是用来管理这些“平行宇宙”的。

git commit -m "<message>"

把你放在“暂存箱”里的所有修改,贴上一张写有总结的“标签”,然后正式存入你的本地“版本历史档案馆”。这就像在游戏里创建了一个“存档点”,以后随时可以读档回来。

使用示例

Terminal
git commit -m "feat: implement user login"
git merge <branch>

在“平行宇宙”(分支)里的新功能开发测试完毕,是时候让它回归主线了。这个命令就像时空管理员,能把你分支上的所有修改安全、平滑地“合并”到主干道上。

使用示例

Terminal
git merge feature-branch
git rebase <base>

觉得分支合并后的历史记录像蜘蛛网一样乱?这个命令是你的“历史整理师”,它能帮你把提交记录变得像一条整洁的直线,让你的提交历史看起来更清爽、更有条理。

使用示例

Terminal
git rebase main
git reset <state>

想坐上“时光机”回到过去的某个版本?这个命令就是你的时光机,能帮你重置到任何一个过去的“存档点”。但请注意:时光旅行有风险,操作需谨慎,因为它真的会改写历史!

使用示例

Terminal
git reset --hard HEAD~1
git switch <branch>

想在你的主线任务和各种支线任务(分支)之间来回切换?这个命令就像一个“传送门”,能让你瞬间从一个“平行宇宙”(分支)穿越到另一个,非常方便。

使用示例

Terminal
git switch main
git tag

你的项目终于发布了 `v1.0` 版本!这时候就该用这个命令给它打上一个永久的“里程碑”标签。这样,无论未来历史如何变迁,你都能轻松地找到这个光荣的时刻。

使用示例

Terminal
git tag v1.0.0

协作

从其他仓库下载对象和引用,或将本地更改推送到远程。

git fetch <remote>

想知道队友们在远程仓库(比如 GitHub)上都更新了什么,但又不想立即合并到自己的代码里?这个命令就像一个“侦察兵”,它会帮你取回远程的所有最新动态,但只是静静地放在一边,不会动你当前的工作。

使用示例

Terminal
git fetch origin
git pull

这是 `git fetch`(侦察)和 `git merge`(合并)的懒人组合版。它会一步到位地从远程仓库拉取最新的修改,并立刻尝试合并到你当前的分支里,让你的本地代码瞬间与团队同步。

git push <remote>

你在本地辛辛苦苦写完的代码,是时候分享给团队了!这个命令就像一个“发射器”,能把你本地的所有提交“推送”到远程仓库,让你的贡献被所有人看到。

使用示例

Terminal
git push origin main

Git 配置

通过一些简单的全局配置,让你的 Git 变得更聪明、更顺手,还能彰显你的个人风格。

git config --global user.name "<name>"

告诉 Git 你是谁。你提交的每一次代码,都会以这个名字作为作者签名。这是协作的第一步,让队友知道这是你的杰作。

使用示例

Terminal
git config --global user.name "Your Name"
git config --global user.email "<email>"

留下你的联系方式。这个邮箱会和你的名字一起,出现在提交记录里。推荐使用 GitHub 上的主邮箱。

使用示例

Terminal
git config --global user.email "[email protected]"
git config --global alias.<alias> <command>

觉得有些命令太长记不住?用它来创建属于你自己的“快捷键”吧!比如,让 `git co` 等于 `git checkout`,瞬间提升幸福感。

使用示例

Terminal
git config --global alias.co checkout
git config --global core.editor <editor>

设置你最喜欢的代码编辑器(如 VS Code)作为 Git 的默认编辑器。当你需要写 commit message 时,它会自动为你打开。

使用示例

Terminal
git config --global core.editor "code --wait"
git config --global init.defaultBranch <name>

为所有新建的本地仓库设置一个默认的主分支名称。社区现在推荐使用 `main` 而不是 `master`。

使用示例

Terminal
git config --global init.defaultBranch main