Git 从入门到日常使用 · 详细学习笔记1. 什么是 GitGit 是一个版本控制系统它能记录你对文件的所有修改历史就像游戏的“存档”一样随时可以回到之前的某个状态。为什么用它多人协作、备份代码、追踪修改、实验新功能而不破坏原有代码。核心概念仓库Repository你的项目文件夹 所有历史记录的总称。提交Commit一次“存档”记录某一时刻所有文件的状态。分支Branch独立开发线让你在不影响主代码的情况下工作。2. Git 安装与配置2.1 安装 GitWindows从 Git官网 下载安装一路“下一步”即可。安装后会有Git Bash终端。macOSbrew install git或下载安装包。Linux (Ubuntu/Debian)sudo apt install git验证安装成功打开终端或 Git Bash输入git --version2.2 初次配置必须告诉 Git 你的身份这样每次提交都会记录是谁做的git config --global user.name 你的昵称 git config --global user.email 你的邮箱查看已有配置git config --list--global表示全局配置这台电脑上所有仓库都生效。如果某个仓库想要不同身份去掉--global在仓库内单独设置。3. Git 基础操作核心流程让我们从零创建一个仓库学习最常用的几个命令。3.1 创建仓库初始化进入你的项目文件夹执行git init此时该文件夹下会多出一个隐藏的.git目录它就是 Git 的“数据库”不要乱动它。3.2 查看状态随时查看当前仓库的文件状态git status会告诉你哪些文件被修改、哪些文件还没有被 Git 跟踪。3.3 添加文件到暂存区StageGit 提交分两步先add到“暂存区”再commit永久保存。git add 文件名 # 添加单个文件 git add . # 添加当前目录所有新文件/修改的文件 git add *.txt # 添加所有txt文件3.4 提交创建存档git commit -m 这里写本次修改的说明例如git commit -m 完成了用户登录功能 理解add像把文件放进“购物车”commit像“下单确认”只有 commit 后才会生成一个历史版本。3.5 查看提交历史git log # 完整历史 git log --oneline # 简洁一行显示按q退出日志查看。3.6 查看修改内容工作区 vs 暂存区git diff # 工作区与暂存区的差异 git diff --staged # 暂存区与上一次提交的差异4. 撤销与回退放心改错4.1 撤销工作区的修改还没 addgit checkout -- 文件名 # 还原成最近一次 commit 或 add 的样子4.2 撤销暂存区的修改已经 add但没 commitgit restore --staged 文件名 # 把文件移出暂存区工作区修改保留4.3 修改最后一次提交还没 pushgit commit --amend -m 新的提交说明可以修改提交信息或者忘记添加某个文件时用。4.4 回退到某个历史版本git log --oneline # 找到目标 commit 的 id比如 a1b2c3d git reset --hard a1b2c3d # 工作区、暂存区、版本库都回到那个版本⚠️ 注意reset --hard会丢弃之后的所有修改谨慎使用。如果想保留修改可以用git reset --soft。5. 分支Branch—— 并行开发的利器5.1 什么是分支主分支通常叫master或main。你可以创建新分支比如feature-login独立开发完成后合并回主分支。分支切换非常快是 Git 的核心优势。5.2 基本分支操作bashgit branch # 列出本地分支* 表示当前分支 git branch 新分支名 # 创建分支 git checkout 分支名 # 切换分支 git checkout -b 新分支名 # 创建并切换到新分支 git branch -d 分支名 # 删除分支已合并5.3 合并分支假设你在feature-login上完成了工作想合并到masterbashgit checkout master # 先切换到目标分支主分支 git merge feature-login # 把 feature-login 合并过来如果遇到冲突conflictGit 会提示哪些文件冲突手动编辑文件解决后add、commit即可。6. 远程仓库以 Gitee / GitHub 为例远程仓库是放在服务器上的代码库用于备份和多人协作。6.1 添加远程仓库地址先在 Gitee/GitHub 上创建一个空仓库不要勾选“生成README”得到类似https://gitee.com/你的用户名/仓库名.git的地址。在本地仓库下执行git remote add origin 远程仓库地址例如git remote add origin https://gitee.com/d-pk/screen.git查看远程仓库git remote -v6.2 推送本地分支到远程第一次推送需要关联上游分支git push -u origin master-u表示建立本地master与远程master的关联之后可直接git push。如果远程仓库有内容比如README需先git pull origin master --allow-unrelated-histories拉取合并。6.3 克隆远程仓库如果项目已经在远程想下载到本地git clone 远程仓库地址会自动创建本地仓库并关联远程。6.4 拉取远程更新git pull origin master # 拉取并合并常用 git fetch origin master # 只拉取不合并查看差异后再决定7. 常见错误与解决方案结合你遇到的问题错误fatal: unable to access ...: Could not resolve host: gitee.com原因DNS 解析失败电脑找不到 Gitee 的服务器。解决步骤由简到繁刷新 DNS打开 CMD 执行ipconfig /flushdns修改 hosts 文件临时C:\Windows\System32\drivers\etc\hosts末尾添加180.76.198.77 gitee.com更换 DNS 服务器比如改成114.114.114.114或223.5.5.5使用 SSH 协议最稳定先生成 SSH 密钥添加到 Gitee然后git remote set-url origin gitgitee.com:用户名/仓库名.git检查 Git 代理git config --global --unset http.proxy错误Updates were rejected because the remote contains work...原因远程仓库有本地没有的提交比如你创建远程时勾选了 README。解决git pull origin master --allow-unrelated-histories合并后再 push。错误Permission denied (publickey)原因使用 SSH 协议但未添加公钥到 Gitee/GitHub。解决重新生成密钥把~/.ssh/id_ed25519.pub内容添加到平台。8. .gitignore —— 忽略不需要版本控制的文件有些文件编译产物、日志、本地配置不应提交。在项目根目录创建.gitignore文件写入要忽略的规则# 忽略所有 .log 文件 *.log # 忽略 node_modules 文件夹 node_modules/ # 忽略 .env 文件 .env9. 常用命令速查表命令作用git init初始化仓库git status查看当前状态git add .添加所有改动到暂存区git commit -m msg提交git log --oneline看简洁历史git branch列出分支git checkout -b 分支名创建并切换分支git merge 分支名合并分支git remote add origin URL关联远程仓库git push -u origin master首次推送git pull拉取并合并git clone URL克隆仓库10. 学习建议与路径先理解三个区工作区 → 暂存区 → 版本库commit多用git status迷茫时就敲它它会提示你下一步能做什么。模仿真实流程自己创建一个项目写几个文件来回提交、建分支、合并、推送到远程。可视化工具辅助初期可以用 Git GUI如 Sourcetree、GitKraken或 IDE 内置的 Git 插件VS Code、IntelliJ帮助理解图形化概念。多练习解决冲突故意制造冲突两个分支修改同一行然后手动合并这是协作中最需要掌握的技能。