Git 基础操作手册:从入门到进阶
1. Git 数据流转模型
理解 Git 的核心在于掌握数据在不同区域间的流转。
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#4F46E5', 'primaryTextColor': '#fff', 'primaryBorderColor': '#3730A3', 'lineColor': '#6366F1', 'secondaryColor': '#10B981', 'tertiaryColor': '#F59E0B'}}}%%
flowchart LR
Workspace["工作区<br/>(Workspace)"] -->|"git add"| Index["暂存区<br/>(Index/Stage)"]
Index -->|"git commit"| Repository["本地仓库<br/>(Local Repo)"]
Repository -->|"git push"| Remote["远程仓库<br/>(Remote Repo)"]
Remote -->|"git pull/fetch"| Repository
Repository -->|"git checkout/restore"| Workspace
classDef primary fill:#4F46E5,stroke:#3730A3,color:#fff
class Workspace,Index,Repository,Remote primary2. 基础操作
2.1 常用核心命令
添加文件:
git add <file>将工作区修改提交到暂存区。提交版本:
git commit -m "message"将暂存区内容持久化到本地仓库。拉取远程:
git pull获取并合并远程仓库的更新。推送远程:
git push将本地提交推送到远程服务器。差异查看:
1
2
3
4# 查看两个提交版本间的差异
git diff <hash1> <hash2>
# 仅查看受影响的文件列表
git diff <hash1> <hash2> --name-only
2.2 日志查看技巧
除标准 git log 外,推荐配置图形化别名以清晰查看分支演变:
1 | # 配置别名 git lg |
3. 标签与版本管理
3.1 标签 (Tag) 操作
标签常用于发布里程碑版本。
- 新建标签:
git tag <name>(默认为当前 HEAD)或git tag <name> <commit_id>。 - 带备注标签:
git tag -a <name> -m "version description"。 - 查看标签:
git tag列出所有本地标签。 - 推送标签:
- 推送指定标签:
git push origin <tagname>。 - 推送所有未推送标签:
git push origin --tags。
- 推送指定标签:
- 删除标签:
- 本地删除:
git tag -d <tagname>。 - 远程删除:
git push origin :refs/tags/<tagname>。
- 本地删除:
3.2 交互式变基 (Rebase)
用于合并多次提交记录,保持提交历史整洁:
1 | # 合并当前分支最近的 N 次提交 |
4. 分支管理
分支是 Git 协作的核心。
4.1 常用分支操作
- 查看分支:
git branch(本地)或git branch -a(所有)。 - 创建与切换:
- 创建分支:
git branch <name>。 - 切换分支:
git checkout <name>或现代命令git switch <name>。 - 创建并切换:
git checkout -b <name>或git switch -c <name>。
- 创建分支:
- 重命名分支:
git branch -m <old_name> <new_name>。 - 合并分支:
git merge <name>将指定分支合并到当前分支。 - 删除分支:
git branch -d <name>。
4.2 批量操作实战
在大型项目中,经常需要清理过期分支:
1 | # 批量删除匹配 'feature' 关键词的远程分支(排除特定分支) |
5. 回滚与撤销
回滚操作需谨慎,建议根据修改所处的阶段选择对应的策略。
5.1 撤销未提交的修改 (Workspace)
1 | # 丢弃工作区的修改,恢复到最后一次提交的状态 |
5.2 撤销已暂存的修改 (Index)
1 | # 将文件从暂存区移回工作区(保留修改) |
5.3 撤销已提交的记录 (Repository)
修正最后一次提交:
git commit --amend -m "new message"。回滚版本:
1
2
3
4# 强制回退到指定版本(丢弃该版本后的所有修改,慎用!)
git reset --hard <hash>
# 软回退(回退版本号,保留工作区代码以便重新提交)
git reset --soft <hash>记录全指令历史:若误操作回滚,使用
git reflog查找丢失的提交哈希。
5.4 特殊场景:停止追踪文件
如果文件已入库但应被忽略(如日志文件):
1 | # 从索引中移除但不删除物理文件 |
6. 环境配置
6.1 基础用户信息
1 | git config --global user.name "Your Name" |
6.2 进阶配置
显示中文:解决
git status中文路径乱码。1
git config --global core.quotepath false
区分大小写:Git 默认对文件名大小写不敏感,建议关闭此特性。
1
git config --global core.ignorecase false
代理设置:
1
2
3
4# 设置代理
git config --global http.proxy 'http://127.0.0.1:8123'
# 取消代理
git config --global --unset http.proxy
6.3 全局忽略文件
创建并配置全局忽略列表(如 .DS_Store, .idea):
1 | # 在 ~/.gitconfig 中配置 |