从零开始学 Git:小白超详细入门指南(含实操与问题解决)

        无论是写代码、做设计还是整理文档,“改来改去后想找回旧版本”“多人协作时内容被覆盖” 都是常见的头疼问题。而 Git,这个强大的版本控制系统,正是解决这些问题的 “神器”。本文从概念到实操,手把手带小白掌握 Git 核心用法,轻松应对个人管理与团队协作。

第一部分:先搞懂 ——Git 是什么?为什么要用?

1.1 Git 的核心作用

        Git 是一个分布式版本控制系统,简单来说,它能帮你:

  • 追踪每一次修改:记录 “谁在什么时候改了什么”,任何历史版本都能随时找回(再也不怕删错文件、改崩代码)。
  • 支持多人协作:多人同时编辑同一个项目,不会互相覆盖,最后能顺畅合并所有人的成果。
  • 本地离线工作:无需联网就能记录版本,联网后再同步到 “云端”,灵活高效。

1.2 别混淆!Git 与 Github/Gitee/Gitlab 的关系

        很多小白会把 Git 和这些平台搞混,其实它们的分工很明确:

  • Git:本地的 “版本控制引擎”,负责在你电脑上记录修改、管理版本。
  • Github/Gitee/Gitlab:基于 Git 的代码托管平台(相当于 “云盘”),用于存放 Git 仓库,方便你备份、分享项目,或与团队成员协作。
  • 类比:Git 是 “发动机”,Github 等平台是 “汽车”,发动机提供动力,汽车负责承载和运输。

第二部分:准备工作 —— 安装与配置 Git

2.1 安装 Git

  1. 访问 Git 官网:Git,根据你的操作系统(Windows/macOS/Linux)下载对应安装包。
  2. 安装时全部按默认选项下一步即可(Windows 系统会自动添加右键菜单,macOS/Linux 通常自带 Git,可通过终端输入 git --version 检查是否已安装)。

2.2 首次配置 Git(告诉 Git 你是谁)

        安装完成后,需要配置 “用户名” 和 “邮箱”—— 这是 Git 记录修改者身份的关键,必须与你在 Github/Gitee 上的账号信息一致。

  1. 打开命令行工具
    • Windows:在任意文件夹空白处右键,选择 Git Bash Here(推荐,命令与 Linux 一致)。
    • macOS/Linux:直接打开 “终端”。
  2. 输入以下命令(替换成你的信息):
    # 配置用户名(如你的 Github 昵称)
    git config --global user.name "Your Name"
    # 配置邮箱(如你的 Github 注册邮箱)
    git config --global user.email "your.email@example.com"
    
  • --global 表示 “全局配置”:这台电脑上所有 Git 仓库都会使用这个身份,只需配置一次。

第三部分:核心实操 —— 从 0 到 1 上传你的第一个项目

        以 Github 为例(Gitee 操作完全一致),带你完成 “本地创建项目关联云端上传代码” 的全流程。

步骤 1:在 Github 上创建 “远程仓库”(云端仓库)

        远程仓库是存放项目的 “云端空间”,先在 Github 上建好它:

  1. 登录 Github 账号,点击右上角 + 号,选择 New repository(新建仓库)。
  2. 填写仓库信息:
  • Repository name:仓库名(如 my-first-git-project,建议英文)。
  • Description(可选):项目描述(如 “我的第一个 Git 练习项目”)。
  • Public/Private:公开(所有人可见)或私有(仅自己 / 指定人可见,新手选 Public 即可)。
  • ⚠️ 关键提醒:不要勾选 Initialize this repository with a README(先创建空仓库,后续从本地上传)。
  1. 点击 Create repository,创建成功后会看到 “快速设置” 页面,先保留页面(后续要复制链接)。

步骤 2:在本地创建项目并关联远程

2.1 初始化本地仓库
  1. 在电脑上创建一个本地文件夹(如桌面新建 my-first-git-project),用于存放项目文件。
  2. 右键该文件夹,选择 Git Bash Here,打开命令行窗口。
  3. 输入以下命令,初始化本地 Git 仓库(让 Git 开始管理这个文件夹):
    git init
    
  • 执行后,文件夹里会生成一个隐藏的 .git 目录(不要手动删除,Git 靠它记录版本)。
2.2 添加文件并提交到本地仓库
  1. 创建第一个文件:用记事本 / VSCode 等工具,在本地文件夹里新建 README.md(项目说明文件),写入内容:
    # My First Git Project
    这是我用 Git 上传的第一个项目!
    

    保存文件。
  2. 将文件添加到 “暂存区”:暂存区相当于 “准备台”,先把要提交的文件放到这里,确认后再正式记录版本。
    # 方式1:添加单个文件(如 README.md)
    git add README.md
    # 方式2:添加当前目录下所有变更(新增、修改、删除的文件,推荐用这个)
    git add .
    
  3. 提交到本地仓库:将暂存区的文件 “打包” 成一个版本,并写清楚本次修改的说明(必须写,方便后续追溯):
    git commit -m "first commit: add README.md"
    
  • -m 后面的文字是 “提交信息”,要简洁明确(如 “新增登录页面”“修复按钮样式”)。
2.3 关联远程仓库并上传
  1. 复制远程仓库链接:回到 Github 新建仓库的 “快速设置” 页面,复制 HTTPS 格式的链接(如 https://github.com/你的用户名/my-first-git-project.git)。
  2. 关联远程仓库:在命令行输入以下命令,告诉本地仓库 “云端地址”(origin 是远程仓库的别名,默认用这个即可):
    git remote add origin https://github.com/你的用户名/my-first-git-project.git
    
  3. 推送(上传)到远程:将本地仓库的版本同步到 Github:
    git push -u origin main
    
  • 解释:
    • push:推送命令(上传本地代码到云端)。
    • origin:远程仓库别名(刚才设置的)。
    • main:当前分支名(新版本 Git 默认主分支是 main,旧版本是 master,可通过 git branch 查看当前分支)。
    • -u:第一次推送时添加,将本地 main 分支与远程 main 分支关联,后续推送只需输入 git push

步骤 3:验证成果

        刷新 Github 仓库页面,你会看到 README.md 已经成功上传 —— 恭喜!你完成了 Git 的第一次完整操作。

第四部分:日常工作流 —— 每天都要用的 Git 组合拳

        掌握基础后,日常开发 / 文档管理的核心流程其实就是 “拉取最新代码 → 修改 → 提交 → 推送”,重复以下步骤即可:

# 1. 开始工作前,先拉取远程最新代码(避免和他人修改冲突)
git pull origin main

# 2. 正常工作:修改文件、新增文件(如写代码、改文档)

# 3. 工作完成后,添加所有变更到暂存区
git add .

# 4. 提交到本地仓库(写清楚本次做了什么)
git commit -m "修复登录按钮点击无响应问题"  # 替换成你的实际操作

# 5. 推送到远程仓库(同步到云端)
git push  # 第一次推分支需用 git push -u origin 分支名

第五部分:小白必看 —— 高频问题与解决方案(FAQ)

问题 1:git push 时要求输入用户名密码,却报错 Support for password authentication was removed

  • 原因:Github 已取消 “账号密码” 推送方式,需用更安全的 Personal Access Token (PAT) 代替密码。
  • 解决步骤
    1. 生成 PAT:登录 Github → 点击头像 → Settings → Developer settings → Personal access tokens → Generate new token
    2. 配置 PAT:
      • 填写 Note(如 “Git 推送令牌”)。
      • 勾选权限:至少勾选 repo(仓库相关权限)。
      • 点击 Generate token复制生成的令牌(只显示一次,务必保存好)
    3. 推送时,“用户名” 填 Github 账号名,“密码” 填刚才复制的 PAT 即可。

问题 2:git pull 时报错 fatal: refusing to merge unrelated histories

  • 原因:本地仓库和远程仓库的 “提交历史不相关”(如本地先 git init 并提交,远程也初始化了 README)。
  • 解决:拉取时允许合并不相关历史,执行命令:
    git pull origin main --allow-unrelated-histories
    

问题 3:提交信息(commit message)写错了,还没推送到远程,怎么改?

  • 解决:修改最后一次提交的信息:
    git commit --amend -m "新的正确提交信息"
    
  • 若已推送到远程,不建议修改(会影响协作),下次提交时写清楚即可。

问题 4:不小心提交了敏感文件(如密码、密钥),或想忽略某些文件(如缓存、日志)?

  • 预防措施:创建 .gitignore 文件,列出不需要 Git 跟踪的文件 / 文件夹,Git 会自动忽略它们。
    1. 在项目根目录新建 .gitignore 文件,写入内容(示例):
      # 忽略 node_modules 文件夹(前端项目依赖)
      node_modules/
      # 忽略 .env 文件(存放环境变量/密码)
      .env
      # 忽略日志文件
      *.log
      
    2. 若已提交敏感文件,需先从 Git 跟踪中移除(保留本地文件):
      git rm --cached 敏感文件名  # 如 git rm --cached .env
      
    3. 执行 git add . 和 git commit -m "添加 .gitignore,移除敏感文件",再推送。

问题 5:git push 时提示 non-fast-forward 冲突?

  • 原因:你本地代码不是最新的 —— 在你修改期间,有人已经往远程推送了新内容,导致版本不一致。
  • 解决:先拉取远程最新代码,合并后再推送:
    # 1. 拉取远程最新代码,Git 会自动尝试合并
    git pull origin main
    # 2. 若出现合并冲突(见下文),手动解决后再提交推送
    git add .
    git commit -m "合并远程最新代码,解决冲突"
    git push
    

第六部分:进阶补充 ——3 个高频场景操作

场景 1:回退到之前的版本(改崩代码时救命)

当修改后发现出错,想恢复到历史上的正常版本,按以下步骤操作:

  1. 查看历史提交记录:获取要回退的 “版本 ID”(一串字母数字组合):
    git log --oneline  # 简洁显示历史,格式:版本ID 提交信息
    

    示例输出:
    a1b2c3d (HEAD -> main) 修复登录样式(改崩了)
    d4e5f6g 添加登录页面(正常版本)
    7h8i9j0 初始化 README(初始版本)
    
  2. 临时查看旧版本(不覆盖当前代码,方便对比):
    git checkout d4e5f6g  # 替换成目标版本ID(如正常的登录页面版本)
    
  • 查看后想回到最新版本:git checkout main
  1. 彻底回退到旧版本(确定当前修改无用,谨慎使用):
    git reset --hard d4e5f6g  # 完全丢弃当前修改,恢复到目标版本
    

场景 2:创建分支(多人协作 / 开发新功能不影响主代码)

        分支相当于 “平行宇宙”,在分支里修改不会影响主分支(main),开发完成后再合并回去,是团队协作的核心。

  1. 创建并切换到新分支(如开发 “个人中心” 功能):
    # 一步完成“创建分支+切换分支”
    git checkout -b feature/user-center
    # 等价于两步:git branch feature/user-center(创建) + git checkout 分支名(切换)
    
  2. 在新分支开发:正常修改文件,执行 git add . → git commit -m "新增个人中心页面" → 第一次推新分支需关联远程:
    git push -u origin feature/user-center
    
  3. 开发完成后合并到主分支
    # 1. 切回主分支
    git checkout main
    # 2. 拉取主分支最新代码(避免冲突)
    git pull origin main
    # 3. 合并新分支到主分支
    git merge feature/user-center
    # 4. 推送合并后的主分支到远程
    git push origin main
    
  4. (可选)删除无用分支(合并后分支可删除,保持整洁):
    git branch -d feature/user-center  # 删除本地分支
    git push origin --delete feature/user-center  # 删除远程分支
    

场景 3:解决合并冲突(多人改同一文件必遇)

        当两人同时修改同一文件的同一部分,git pull 或 git merge 会触发冲突,Git 会在文件中标记冲突位置,手动解决即可。

  1. 识别冲突:执行合并命令后,终端提示 Automatic merge failed; fix conflicts and then commit the result.,同时冲突文件会出现标记。
  2. 打开冲突文件:找到冲突标记(以 <<<<<<< 开头,======= 分隔,>>>>>>> 结尾),示例:

    html

    <<<<<<< HEAD  # 你本地的代码
    <button class="login-btn">登录</button>
    =======  # 分界线:上面是你的代码,下面是远程/其他分支的代码
    <button class="login-btn primary">登录按钮</button>
    >>>>>>> feature/user-center  # 远程/其他分支的代码
    
  3. 手动解决冲突:删除冲突标记,修改为最终想要的代码:
    <button class="login-btn primary">登录</button>  # 保留正确样式和文字
    
  4. 完成合并:解决所有冲突后,提交即可:
    git add .  # 标记冲突已解决
    git commit -m "解决合并冲突:统一登录按钮样式"
    git push  # 推送合并结果到远程
    

第七部分:总结 ——Git 核心命令速查表

命令作用通俗类比
git init初始化本地 Git 仓库买一本新笔记本,准备记录
git add .添加所有变更到暂存区把要提交的作业放到桌面上
git commit -m "msg"提交到本地仓库,写说明把桌上的作业正式记到笔记本里
git remote add origin 链接关联远程仓库告诉笔记本 “要同步到哪个云端”
git push推送到远程仓库把笔记本内容拍照发到云端
git pull拉取远程最新代码从云端下载他人更新的内容
git log --oneline查看简洁的提交历史快速翻笔记本目录
git checkout 版本ID临时查看旧版本翻到笔记本某一页
git checkout -b 分支名创建并切换分支拿一本新笔记本记新功能
git merge 分支名合并分支到当前分支把新笔记本内容整理到主笔记本

        Git 看似命令多,但核心逻辑很简单:“记录修改、同步云端、协作不冲突”。新手不用追求一次性记住所有命令,先掌握 “本地提交→远程推送” 的基础流程,遇到问题时对照本文或搜索错误信息,练 2-3 个项目就能熟练上手。

自购买、自扫描、带书签,品质保证 第 1 章:入门篇 1.1 什么是 Git?为什么要习它? 1.2 其它版本控制系统的差异第2 章:环境安装2.1 安装在Windows 作业系统2.2 安装在Mac OSX 作业系统2.3 安装在Linux 作业系统2.4 图形化介面工具第3 章:终端机/ 命令提示字元3.1终端机及常用指令介绍3.2 超简明Vim 作介绍第4 章:设定Git 4.1 使用者设定4.2 其它方便的设定第5 章:开始使用Git 5.1 新增、初始Repository 5.2 把档案交给Git 控管5.3 工作区、暂存区储存库5.4 检视纪录5.5 状况题如何在Git 里删除档案或变更档名? 5.6 状况题 修改 Commit 纪录 5.7 状况题 追加档案到最近一次的 Commit 5.8 状况题 新增目录? 5.9 状况题 有些档案我不想放在 Git 里面... 5.10 状况题 检视特定档案的 Commit 纪录 5.11 状况题 等等,这行程式谁写的? 5.12 状况题 啊!不小心把档案或目录删掉了⋯ 5.13 状况题 刚才的 Commit 后悔了,想要 拆掉重做⋯ 5.14 状况题 不小心使用 hard 模式 Reset 了某个 Commit,救得回来吗? 5.15 冷知识 HEAD 是什么东西? 5.16 状况题 可以只 Commit 一个档案的部份的内容吗? 5.17 冷知识 那个长得很像乱码 SHA-1 是怎么算出来的? 5.18 超冷知识 在. git 目录里有什么东西? Part 1 5.19 超冷知识 在. git 目录里有什么东西? Part 2 第 6 章:使用分支 6.1 为什么要使用分支? 6.2 开始使用分支 6.3 对分支的误解 6.4 合并分支 6.5 状况题 为什么我的分支都没有「小耳朵」? 6.6 常见问题合并过的分支要留着吗? 6.7 状况题 不小心把还没合并的分支砍掉了,救得回来吗? 6.8 另一种合并方式(使用 rebase) 6.9 合并发生冲突了,怎么办? 6.10 冷知识 为什么大家都说在 Git 开分支「很便宜」? 6.11 冷知识 Git 怎么知道现在是在哪一个分支? 6.12 状况题 我可以从过去的某个 Commit 再长一个新的分支出来吗?第7 章:修改历史纪录7.1 状况题修改历史讯息7.2 状况题把多个Commit 合并成一个Commit 7.3 状况题把一个Commit 拆解成多个Commit 7.4 状况题想要在某些Commit 之间再加新的Commit 7.5 状况题想要删除某几个Commit 或是调整Commit 的顺序7.6 Reset、Revert 跟Rebase 指令有什么差别?第 8 章:标签 8.1 使用标签 8.2 冷知识 标签跟分支有什么不一样?第9 章:其它常见状况题冷知识9.1 状况题手边的工作做到一半,临时要切换到别的任务9.2 状况题不小心把帐号密码放在Git 里了,想把它删掉⋯ 9.3 冷知识怎么样把档案真正的从Git 里移掉? 9.4 冷知识 你知道 Git 有资源回收机制吗? 9.5 冷知识 断头(detached HEAD)是怎么一回事?第 10 章:远端共同协作 - 使用 GitHub 10.1 GitHub 是什么? 10.2 Push 上传到 GitHub 10.3 Pull 下载更新 10.4 状况题 怎么有时候推不上去... 10.5 从伺服器上取得 Repository 10.6 常见问题 Clone 跟 Pull 指令有什么不一样? 10.7 其它开发者的互动 - 使用 Pull Request(PR) 10.8 状况题 怎么跟上当初 fork 专案的进度? 10.9 状况题 怎么删除远端的分支? 10.10 状况题 听说 git push -f 这个指令很可怕,什么情况可以使用它呢? 10.11 使用 GitHub 免费制作个人网站 10.12 冷知识 一定要有 GitHub 才能得到别人更新的档案吗?第 11 章:使用 Git flow 11.1 Git Flow 是什么?为什么需要这种东西?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值