📝从零开始掌握 Git:版本控制入门笔记

67 阅读3分钟

🚫 一个项目 ≠ 多个 Git 仓库

  • 在同一个项目中,不应该存在多个 Git 仓库
  • Git 是用来统一管理代码版本的,多个仓库会带来混乱,不利于协作和维护。
  • 正确做法:整个项目只初始化一个仓库,用分支(branch)来管理不同功能或版本。

🛠️ 初始化 Git 仓库

  • 在开发目录中执行:

    git init
    
  • 此时会生成一个隐藏目录 .git,这就是你的本地代码仓库

  • 默认会创建 master 分支(现在新版本 Git 默认可能是 main)。

  • Git 的核心能力:管理文件的不同版本,特别适合大型项目多人协作场景。


🔍 git status —— 你的仓库“体检报告” 🩺

  • 这是最基础也最重要的命令之一

  • 在做任何操作前,建议先运行:

    git status
    
  • 它能告诉你:

    • 哪些文件尚未提交(不在仓库中)
    • 哪些是未跟踪的文件(既不在仓库,也不在暂存区)

💡 小贴士:养成“先 status,再操作”的好习惯!


git add —— 把修改放进“暂存区” 📦

  • 示例:

    git add readme.txt
    
  • 这一步将文件的修改加入暂存区(stage) ,准备下一次提交。

  • 暂存区就像“购物车”,你可以选择性地添加要提交的内容。


git commit —— 正式保存版本 🗂️

  • 提交命令:

    git commit -m "wrote a readme file"
    
  • 提交到当前分支(如 master),生成一个唯一的 SHA 哈希 ID(如 a1b2c3d...)。

  • 为什么用哈希 ID 而不是自增数字?

    • 多人协作时,自增 ID 容易冲突 ❌
    • 哈希 ID 全局唯一 ✅,由内容生成,天然防篡改

📌 提交信息要清晰表达功能或改动目的,方便日后回溯!

  • 提交的是文件的修改内容,Git 会生成该文件的新版本。
  • 输出示例:2 insertions(+) 表示新增了 2 行代码。

🔎 git diff —— 查看差异 👀

  • 在重大提交前,先运行:

    git diff
    
  • 它会显示工作区 vs 暂存区的代码差异。

  • 好习惯:先 diff,再 add/commit,避免误提交!


🧹 “干净的仓库”是什么?

  • git status 显示 “nothing to commit, working tree clean” 时,说明:

    • 所有文件都已提交或忽略
    • 没有未跟踪的文件
    • 仓库处于“干净”状态 ✅

🔁 版本回退:穿越时空 ⏪

  • 查看提交记录:

    git log --oneline
    # 输出示例:36803fa (HEAD -> master) append GPL
    
    • HEAD 指针:指向当前分支的最新提交
    • 可通过移动 HEAD 实现“时间旅行”
  • 回退命令:

    git reset --hard HEAD^     # 回退 1 个版本
    git reset --hard HEAD~2    # 回退 2 个版本
    git reset --hard a1b2c3d   # 回退到指定 commit ID
    

    ⚠️ --hard丢弃工作区和暂存区的所有修改,慎用!


🧯 撤销工作区修改:git checkout --

  • 如果你在 readme.txt 中做了错误修改,想完全丢弃

    git checkout -- readme.txt
    
  • 这会将文件恢复到最近一次 commit 的状态

  • 注意:未 add 的修改会被永久删除,无法恢复!


🧠 Git 三大区域总结

区域作用
工作区(Working Directory)你正在编辑的文件
暂存区(Staging Area)git add 后的修改暂存地
仓库(Repository)git commit 后的永久版本存储

🌈 小结

Git 是程序员的“时光机”⏳ + “协作神器”🤝。
掌握 statusaddcommitdiffresetcheckout 这几个核心命令,就迈出了版本控制的第一步!