4、Git基本操作:git init、git clone、git add、git commit、git status、git log
好,咱们进入正题。Git 的基本操作,说白了就是你和代码仓库打交道的日常。我见过不少新手,一上来就背命令,结果遇到问题还是懵。其实你只要理解这几个核心动作,后面就顺了。
先看一张图,帮你快速建立整体认知:
4.1 git init — 从零开始建仓库
git init 是在当前目录下创建一个新的 Git 仓库。说白了,就是告诉 Git:「嘿,这个文件夹我要管起来了!」
我个人习惯,拿到一个新项目,第一件事就是跑 git init。哪怕项目还没写一行代码,先把版本控制搭好,心里踏实。
# 创建一个新目录并初始化
mkdir my-project
cd my-project
git init
# 或者对已有项目初始化
cd existing-project
git init
运行后,目录下会多出一个 .git 隐藏文件夹。别手贱去删它,删了版本历史就全没了。我曾经有个同事,清理磁盘时把 .git 文件夹删了,结果整个项目的提交记录全丢了,那叫一个惨。
git status 先试探一下。如果提示「fatal: not a git repository」,那就说明还没初始化。
4.2 git clone — 把别人的仓库搬回家
git clone 是从远程服务器复制一个完整的仓库到本地。包括所有历史记录、分支、标签,一应俱全。
你想想看,团队协作时,你不可能每次都从头开始写。用 git clone 把项目拉下来,直接开干。
# 克隆 HTTPS 地址
git clone https://github.com/username/repo.git
# 克隆 SSH 地址(推荐,不用输密码)
git clone git@github.com:username/repo.git
# 克隆到指定目录
git clone https://github.com/username/repo.git my-folder
这里有个坑:克隆下来的仓库,默认只有一个分支——main 或 master。如果你需要其他分支,得手动切换。嗯,这个后面会细讲。
4.3 git add — 把改动「请」进暂存区
你改完代码,Git 不会自动跟踪。你得用 git add 告诉它:「这些文件我要提交了,先放暂存区等着。」
我刚开始用 Git 时,经常忘记 git add,直接 git commit,结果提示「nothing to commit」。当时还以为是 Git 坏了,后来才明白——add 是提交的前置步骤,缺一不可。
# 添加单个文件
git add index.html
# 添加多个文件
git add style.css script.js
# 添加当前目录所有改动(慎用!)
git add .
# 交互式添加(推荐,可以挑着加)
git add -p
git add .。你想想看,万一你改了个配置文件,里面不小心写了密码,这一加就全进去了。用 git add -p 可以逐块审查,安全很多。
4.4 git commit — 拍一张快照
git commit 是把暂存区的内容正式保存到本地仓库。每次提交就像拍了一张照片,以后可以随时回到这个时间点。
提交信息一定要写清楚。我见过有人写「fix bug」、「update」,甚至「111」——这种信息过一个月你自己都看不懂。好的提交信息应该说明「为什么改」和「改了什么」。
# 基本提交
git commit -m "修复登录页面的验证码超时问题"
# 提交并自动添加所有已跟踪文件的改动(跳过 add)
git commit -a -m "更新用户头像上传逻辑"
# 写多行提交信息(会打开编辑器)
git commit
我个人习惯用 git commit -m 加简短描述。如果改动比较复杂,我会用编辑器写多行,第一行是标题,空一行后写详细说明。
4.5 git status — 随时看看仓库状态
git status 是我用得最多的命令,没有之一。它告诉你当前工作区、暂存区、本地仓库之间的差异。
你想想看,你改了一堆文件,到底哪些还没 add?哪些已经 add 了但没 commit?git status 一目了然。
# 查看完整状态
git status
# 简洁模式(推荐)
git status -s
简洁模式下,?? 表示未跟踪的文件,M 表示已修改,A 表示已添加到暂存区。嗯,这个输出格式很紧凑,我平时都用这个。
| 状态符号 | 含义 | 说明 |
|---|---|---|
?? |
未跟踪 | 新文件,Git 还不知道它 |
M |
已修改 | 文件内容有变动,但未 add |
A |
已暂存 | 已 add,等待 commit |
D |
已删除 | 文件被删除了 |
4.6 git log — 翻翻历史账本
git log 显示提交历史。每次提交都有一个唯一的 SHA-1 哈希值,就像身份证号一样。
我曾经排查一个线上 bug,需要找到「到底是哪次提交引入了问题」。用 git log 配合 git diff,很快就定位到了。没有历史记录,你只能靠猜。
# 查看完整日志
git log
# 简洁的一行模式
git log --oneline
# 图形化显示分支合并历史
git log --graph --oneline --all
# 查看某个文件的修改历史
git log --follow filename
--oneline 模式特别实用,每个提交只显示一行,一眼扫过去就能看到整个脉络。我平时查历史基本都用这个。
git log 输出太长,按 q 键退出。按 空格 翻页,按 回车 逐行滚动。
4.7 实战:一个完整的操作流程
把上面这些命令串起来,就是一个标准的 Git 工作流。我带你走一遍:
# 1. 初始化或克隆
git init my-app
cd my-app
# 2. 写代码... 然后查看状态
git status
# 3. 把改动加入暂存区
git add index.html style.css
# 4. 提交
git commit -m "完成首页布局和样式"
# 5. 再改点东西,查看历史
git log --oneline
你看,就这么几步。刚开始可能会觉得麻烦,但用顺手了,你会发现没有 Git 简直没法干活。
init 建仓库,clone 拉代码,add 进暂存,commit 存历史,status 看状态,log 查记录。这六个命令,就是 Git 操作的基石。
嗯,今天就先聊到这儿。这些命令你多敲几遍,肌肉记忆就形成了。下次我们聊聊分支操作——那才是 Git 真正强大的地方。
可可精品资料库