返回笔记列表

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打标签