git知识点黄金笔记

📚 第一部分:Git 核心概念与基础

这部分是 Git 的"地基",理解了它们,后续的操作才会有清晰的脉络。

  • 什么是 Git?

    Git 是目前最主流的分布式版本控制系统,由 Linus Torvalds 于2005年为管理 Linux 内核开发而创造。它的核心优势在于:

    • 分布式:每个开发者的本地都拥有完整的项目历史,不依赖中央服务器,可以离线工作。

    • 高效与安全:底层使用SHA-1哈希值来保证数据的完整性,操作速度快。

  • 四大工作区域

    Git 管理文件,主要通过以下四个区域流转:

    1. 工作区 (Workspace):你电脑上实际编辑代码的目录。

    2. 暂存区 (Index/Stage):一个临时的存储区域,存放你准备提交的修改。它是工作区和版本库之间的缓冲地带。

    3. 本地仓库 (Local Repository) :你电脑上 .git 文件夹,这里存储了项目所有提交记录和版本信息。

    4. 远程仓库 (Remote Repository):托管在服务器(如Gitee、GitHub)上的仓库,用于团队协作和备份。

  • 初次运行前的配置

    安装 Git 后,第一件事就是设置你的身份信息,这会记录在每一次提交里:

    bash

    复制代码
    git config --global user.name "你的用户名"
    git config --global user.email "你的邮箱"
    git config --list # 查看所有配置

🔧 第二部分:日常开发核心命令 (必会)

这套命令是每天开发都要用到的,构成了最基础的"增删改查"工作流。

分类 核心命令 功能说明 常用示例
仓库初始化 git init 在当前目录初始化一个新的 Git 仓库 git init
git clone <URL> 克隆一个远程仓库到本地 git clone https://gitee.com/xyoam/heart.git
文件操作 git status 查看当前工作区和暂存区的文件状态 git status / git status -s (精简模式)
git add <文件> 将工作区的改动添加到暂存区 git add . (添加所有) / git add *.js
git commit -m "说明" 将暂存区的快照提交到本地仓库,生成一个版本记录 git commit -m "feat: 添加登录功能"
查看信息 git log 查看当前分支的提交历史 git log --oneline --graph (图形化精简显示)
git diff 比较不同区域之间的代码差异 git diff (工作区 vs 暂存区)
远程协作 git remote -v 查看当前仓库关联的远程仓库地址 git remote add origin <URL> (添加远程仓库)
git push 将本地分支的提交推送到远程仓库 git push -u origin main (首次推送并关联)
git pull 从远程拉取最新代码并与当前分支合并 (fetch + merge) git pull origin main

🌿 第三部分:分支管理 (团队协作的精髓)

分支是 Git 最强大的特性,它让你可以并行开发,互不干扰。

  • 分支的本质与操作

    分支本质上是一个指向提交对象的可变指针 ,而 HEAD 指针则指向当前所在的分支。

操作 命令 说明
查看分支 git branch 查看本地分支列表,当前分支前有 * 标记
创建分支 git branch <分支名> 在当前提交上创建一个新指针
切换分支 git checkout <分支名> / git switch <分支名> switch 是 Git 2.23+ 推荐的新命令,语义更清晰
创建+切换 git checkout -b <分支名> / git switch -c <分支名> 日常最常用的快捷方式
删除分支 git branch -d <分支名> 删除已合并的分支;若未合并需用 -D 强制删除
合并分支 git merge <分支名> 将目标分支合并到当前分支
  • 合并的两种主要场景

    1. 快进合并 (Fast-forward) :当目标分支(如main)在分叉后没有新提交时,Git 只需将指针直接前移即可。这种模式不会创建新的合并提交。

    2. 三方合并 (Three-way Merge) :当两条分支都有新提交时,Git 会基于它们的共同祖先 进行合并,并创建一个新的合并提交来记录这次整合。

  • 解决合并冲突

    当不同分支修改了同一文件的同一区域时,Git 无法自动合并,产生冲突。解决步骤如下:

    1. 打开冲突文件,查找 <<<<<<< HEAD、=======、>>>>>>> [分支名] 标记。

    2. 手动编辑文件,保留需要的内容,并删除所有冲突标记。

    3. 保存文件,用 git add 将其标记为已解决。

    4. 执行 git commit 完成合并提交。

🚀 第四部分:高级操作 (进阶必备)

掌握这些操作,能让你更灵活地应对复杂场景。

  • git rebase (变基)

    与 merge 合并不同,rebase 会将当前分支的提交"复制"到目标分支的最新提交之后,从而创造出一条更线性的提交历史。

    • 重要原则 :不要对已经推送到公共仓库的提交执行 rebase,否则会给协作者带来灾难。
  • 撤销与改写历史

    • git commit --amend:修改最近一次提交的信息或补充漏掉的文件,不产生新的提交ID。

    • git reset:回退版本。--soft、--mixed(默认)、--hard 三种模式对工作区和暂存区的影响不同。慎用 --hard,它会丢弃所有未提交的改动。

    • git revert <提交ID>:通过创建一个新提交来撤销某次历史提交的改动。这是一种安全的方式,因为它是"向前"走的,不会改写历史,适合用于公共分支。

  • git stash (储藏)

    当你需要紧急切换分支,但当前工作区还有未完成的修改时,用 git stash 可以将这些修改暂存起来,让你的工作区恢复干净。之后用 git stash pop 可以恢复这些修改。

  • git tag (标签)

    用于给项目在特定时间点(如版本发布时)打上标记,方便以后回溯。分为轻量标签和附注标签两种。

  • git reflog (引用日志)

    这是 Git 的"后悔药"。它会记录你在本地仓库的所有操作历史(包括已删除的提交)。当你误操作 reset 后,可以用 git reflog 找到丢失的提交ID并恢复。

🤝 第五部分:主流协作工作流

在团队中,需要根据项目特点选择合适的工作流模式。

工作流模式 核心特点 适用场景
Git Flow 分支类型严格,包括 master、develop、feature/、release/、hotfix/ 等。 大型项目,有严格的发布周期和版本管理要求。
GitHub / Gitee Flow 流程简单,只有一个长期分支 main。所有开发都在 feature/ 分支进行,完成后通过 Pull Request (PR) 进行代码审查和合并。 敏捷开发,持续部署,追求快速迭代的团队。
Forking Flow 每个开发者都拥有自己 Fork 的远程仓库,通过向主仓库发起 PR 来贡献代码。 开源项目,外部贡献者数量不固定。

💎 核心心法总结

  1. 养成随时 git status 的习惯:这是你了解当前仓库状态的"导航仪"。

  2. 小步提交,频繁推送:将每次提交限定为一个逻辑单元,并附上清晰说明。这不仅是好习惯,更是安全的保障。

  3. 公共分支历史禁改 :永远不要对已推送到公共仓库的 main 或 develop 分支使用 git reset 或 git rebase。

  4. 推送前先拉取 :开始工作前和推送代码前,先 git pull 同步最新代码,这是避免冲突的最佳方式。

相关推荐
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
Winlifes3 天前
我给 Codex 做了一个 Git 面板:分支树、提交历史和工作区操作
git
深圳老胡3 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
Because_of_Her13 天前
并查集-听课笔记
笔记·算法·并查集
彧azz3 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
陈卫军老师3 天前
陈卫军:把口味写在一张纸上,店才稳得住
经验分享·笔记·流量运营
Elasticsearch3 天前
Elastic Observability 的跨项目搜索:通过一个查询搜索所有关联项目
elasticsearch
`流年づ3 天前
人工智能学习笔记 - 补充
人工智能·笔记·深度学习·学习
qeen873 天前
【Linux】操作系统之进程介绍(二)
linux·笔记·学习·进程
从零开始的嵌入式之旅3 天前
day47
arm开发·经验分享·笔记·嵌入式硬件