Git 基础:init / add / commit / push / 分支
Git 是版本控制工具——记录代码每次改动,让你能回退、对比、并行开发。这篇从零开始,覆盖日常开发 90% 会用到的操作。
一、初始化和基本流程
初始化仓库
mkdir myproject && cd myproject
git init # 创建 .git 目录
git status # 查看状态(会提示 untracked files)
基本工作流
git add . # 暂存所有改动
git commit -m "feat: 添加首页" # 提交
git log --oneline # 查看提交历史
日常工作循环
# 改了代码
git status # 看改了什么
git add file.py # 暂存特定文件(或 git add . 全部)
git commit -m "fix: 修复登录 bug"
git push # 推到远程
二、.gitignore
告诉 Git 哪些文件不跟踪。创建 .gitignore:
# Python
__pycache__/
*.pyc
venv/
.env
# 系统
.DS_Store
Thumbs.db
# IDE
.idea/
.vscode/
# 构建
dist/
build/
node_modules/
💡 注意:已经被 Git 跟踪的文件,加了 .gitignore 也不会自动忽略。要先
git rm --cached filename 再重新 add。三、查看和对比
git diff # 工作区 vs 暂存区
git diff --staged # 暂存区 vs 上次提交
git diff HEAD~1 # 和上一次提交对比
git log -p # 带 diff 的日志
git show # 查看某次提交的完整改动
四、分支
创建和切换
git branch feature-login # 创建分支
git checkout feature-login # 切换
# 或一步到位
git checkout -b feature-login # 创建+切换
合并
git checkout main
git merge feature-login # 把 feature-login 合进 main
git branch -d feature-login # 删掉已合并的分支
查看分支
git branch # 本地分支
git branch -a # 所有分支(含远程)
git log --oneline --graph --all # 图形化看分支
五、远程仓库
# 添加远程
git remote add origin git@github.com:you/project.git
# 推送
git push -u origin main # -u 设置上游,以后直接 git push
# 拉取
git pull # fetch + merge
git fetch # 只下载不合并
# 查看远程
git remote -v
六、撤销操作
撤销工作区改动(还没 add)
git checkout -- file.py # 丢弃改动
# 或
git restore file.py # 新版 Git 写法
撤销暂存(add 了但没 commit)
git reset file.py # 从暂存区移除,保留文件内容
git restore --staged file.py # 新版写法
撤销提交(commit 了但没 push)
git reset --soft HEAD~1 # 撤销提交,改动保留在暂存区
git reset --mixed HEAD~1 # 撤销提交,改动保留在工作区
git reset --hard HEAD~1 # 撤销提交,改动全丢(慎用!)
修改上一次提交
git add forgotten-file.py
git commit --amend --no-edit # 把文件加到上次提交里
七、Git 配置
# 全局配置
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main # 默认分支名 main
git config --global pull.rebase false # pull 用 merge(更安全)
八、常用命令速查
git status | 当前状态 |
git add / commit / push | 基本流程 |
git log --oneline | 简略日志 |
git diff / diff --staged | 看改动 |
git checkout / switch | 切分支 |
git merge / rebase | 合并分支 |
git stash / stash pop | 暂存当前改动 |
git tag v1.0 | 打标签 |