你有没有过这种经历:代码改了一天发现改坏了想回到昨天,但昨天没备份;或者几个人改同一个文件改到冲突满地;或者一个bug改好又冒出来不知道是谁改的。
这就是没版本控制的下场。Git是现在最主流的版本控制工具,学会它你的代码人生会顺畅很多。今天从零讲,1小时上手。
一、Git到底在干嘛?
一句话:Git是代码的时光机+协作神器。它记录了代码的每一次修改,你可以随时回到任意历史版本,也可以多人同时改代码最后合并。
三大核心概念:仓库(存所有代码和历史记录的文件夹)、提交(一次代码快照,相当于游戏存档)、分支(从主干分出来独立开发的一条线,开发完再合并回去)。
二、安装配置
去git-scm.com下载安装,默认下一步就行。安装完右键任意文件夹有"Git Bash Here"选项。
第一次用需要配置用户名和邮箱(每次提交会记录):
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
查看配置:git config --list
三、本地仓库:初始化+提交
在项目目录下执行:
git init → 初始化仓库,生成隐藏的.git文件夹
git add . → 把当前所有修改加入暂存区(准备提交的文件列表)
git commit -m "第一次提交" → 把暂存区的文件提交到仓库,-m后面写这次修改的说明
工作流程:改代码→git add→git commit→改代码→git add→git commit……每次commit就是一个存档点。
查看提交历史:git log(看所有历史,q退出)。git log --oneline(简洁模式,一行一个提交)。
四、远程仓库:GitHub/Gitee
本地仓库只有你自己能看到,要备份和协作就需要推到远程。GitHub是国际最大,Gitee是国内版(速度快)。
1. 去GitHub/Gitee创建一个仓库(New repository),复制地址
2. 本地关联远程:git remote add origin 仓库地址
3. 推送到远程:git push -u origin master(-u参数第一次用,之后直接git push就行)
4. 克隆别人的仓库:git clone 仓库地址(自动生成目录并拉下来)
SSH密钥配置:每次push/pull都输密码很烦。用SSH免密:ssh-keygen生成密钥→把公钥加到GitHub/Gitee→之后操作不用输密码了。
五、分支:多人协作的灵魂
默认只有master/main分支。开发新功能时应该新建分支,开发完再合并回去:
git checkout -b feature/登录功能 → 创建并切换到新分支
git checkout master → 切回主分支
git branch → 查看所有分支
git merge feature/登录功能 → 把功能分支合并到当前分支
典型协作流程:从master建feature分支→在feature上开发→开发完切回master→merge feature→push。这样master始终稳定,不会被开发中的代码搞乱。
六、冲突解决:两个人改了同一行怎么办?
这是新手最头疼的问题。当你merge时Git提示"Automatic merge failed",就是冲突了——两个人改了同一文件的同一行。
打开冲突文件,你会看到:
HEAD和master的修改用=======分隔。你要手动编辑,保留正确的版本,删掉冲突标记。然后git add .→git commit。
IDE里解决冲突更直观:VS Code/IntelliJ都有可视化的冲突解决界面,点一下选左边还是右边就行。
七、撤销提交:改坏了怎么回去?
还没commit,改坏了:git checkout -- 文件名 → 恢复文件到上次commit的状态。
已经commit但还没push:git reset --soft HEAD~1 → 撤销最近一次commit,但代码还在(适合想修改commit信息)。git reset --hard HEAD~1 → 彻底回到上一个版本(⚠️代码会丢!慎用)。
已经push到远程:git revert 提交号 → 生成一个反向提交撤销那次修改,比reset安全(不影响远程历史)。
八、常用命令速查表
git init → 初始化仓库
git add . → 暂存所有修改
git commit -m "说明" → 提交
git log --oneline → 查看历史
git remote add origin URL → 关联远程
git push origin master → 推送到远程
git pull origin master → 拉取远程更新
git clone URL → 克隆仓库
git checkout -b 分支名 → 新建分支
git merge 分支名 → 合并分支
git checkout -- 文件名 → 撤销未提交修改
git reset --soft HEAD~1 → 撤销最近提交(保留代码)
git stash → 临时保存未提交修改(切分支时用)
git stash pop → 恢复stash的修改
九、避坑清单
❌ 不要commit敏感信息(密码/密钥/token)→ 用.gitignore排除
❌ .gitignore文件要加:node_modules/、vendor/、.env、*.log
❌ 不要用git reset --hard除非你确定代码不要了
❌ 多人协作先pull再push→避免冲突
❌ commit信息要写清楚→"修复登录bug"比"修改了一下"有用多了
Git入门就这些核心命令。1小时学完,平时多练。版本控制是程序员的基本素养,也是团队协作的基础。晚安,打工人。
