Git 是当前最流行的分布式版本控制系统。许多人认为 Git 太混乱,或认为版本控制系统很高端复杂,其实不然,这篇文章有助于快速学习使用 Git。
Git基础概念
Git 是目前世界上最先进的分布式版本控制系统。要理解 Git 的工作原理,先了解几个核心概念:
工作区(Working Directory)
你的项目所在目录,存放着项目的实际文件。
暂存区(Index / Stage)
通过 git add 将修改加入暂存区,表示这些修改会进入下一次提交。
本地仓库(Local Repository)
通过 git commit 将暂存区内容提交到本地仓库,形成可回溯的历史。
远程仓库(Remote Repository)
托管在远程服务器(如 GitHub、Gitee、GitLab)的仓库,用于协作与备份。
Git安装与配置
1. 安装 Git
-
Windows:
-
前往官网下载安装包 https://git-scm.com/download/win
-
按默认选项安装
-
开始菜单中使用“Git Bash”
-
-
macOS:
brew install git- Linux(Ubuntu/Debian):
sudo apt-get install -y gitTIP安装完成后,终端执行
git --version验证安装。
2. 配置用户信息
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
git config --list3. 其他常用配置
git config --global color.ui true # 命令行彩色输出
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
git config --global --unset http.proxy # 如曾配置过代理且需移除创建仓库
1. 初始化本地仓库
git init这会创建 .git 隐藏目录用于版本跟踪。
WARNING请勿手动修改
.git目录内容。
2. 克隆远程仓库
git clone 仓库地址
# 例如:
git clone https://github.com/username/repo.git
# 克隆指定分支
git clone -b 分支名 仓库地址
# 例如:
git clone -b dev https://github.com/username/repo.gitGit基本工作流程
1. 查看当前状态
git status显示工作区与暂存区状态、未跟踪/已修改文件等。
2. 添加文件到暂存区
git add 文件名 # 添加指定文件
git add . # 添加当前目录所有修改
git add -p # 交互式选择部分修改3. 提交到本地仓库
git commit -m "提交说明"提交信息有一定的前缀规范:
| 类型 | 含义 |
|---|---|
| feat | 新功能 |
| fix | 修复 bug |
| docs | 文档变更 |
| style | 代码格式(不影响逻辑) |
| refactor | 重构(非新增功能、非修复 bug) |
| test | 测试相关 |
| chore | 构建流程或依赖等杂项 |
4. 查看提交历史
git log # 详细日志
git log --oneline # 单行显示
git log -5 # 最近 5 次提交
git log --stat # 显示变更文件统计Git常用命令大全
1. 文件操作命令
git add 文件名
git add .
git rm 文件名
git rm -r 目录名
git mv 旧文件名 新文件名2. 查看差异命令
git diff # 工作区与暂存区差异
git diff --cached # 暂存区与上次提交差异
git diff HEAD^ # 与上一个版本比较
git diff HEAD -- ./lib # 与 HEAD 比较 lib 目录差异
git diff origin/master..master # 远程 master 相对本地 master 的差异3. 查看状态和历史命令
git status
git log
git log -1
git log --oneline
git log --stat
git show 提交ID
git show HEAD
git show HEAD^4. 标签操作命令
git tag
git tag -a v2.0 -m '版本说明'
git show v2.0
git log v2.05. 搜索命令
git grep "搜索文本"
git grep -e '#define' --and -e SORT_DIRENT分支管理
分支让你并行开发不同功能,互不干扰。
1. 基本分支操作
git branch # 显示本地分支
git branch -a # 包含远程分支
git branch -r # 仅远程分支
git branch 分支名 # 创建分支
git checkout 分支名 # 切换分支
git checkout -b 分支名 # 创建并切换
git branch -d 分支名 # 删除已合并分支
git branch -D 分支名 # 强制删除未合并分支
git branch -m 旧分支 新分支 # 重命名分支2. 分支合并
git merge 分支名
git merge --no-ff -m "合并说明" 分支名 # 禁用 fast-forward,保留合并记录3. 解决冲突
当不同分支修改同一位置时会产生冲突,Git 会标记如下:
<<<<<<< HEAD
当前分支的内容
=======
要合并分支的内容
>>>>>>> 分支名解决步骤:
-
手动编辑文件,保留需要的内容
-
git add标记冲突已解决 -
git commit完成合并
4. 分支管理策略
Git分支管理策略可以保持代码库的整洁和有序,以下是几种常见的Git分支管理策略:
-
主分支包括Master和Develop分支
-
Master分支用于存放稳定的生产版本
-
Develop分支用于日常开发和集成
-
-
此外,还有三类辅助分支
-
Feature分支用于开发新功能
-
Release分支用于发布前的准备
-
Hotfix分支用于紧急修复生产环境中的问题
-
远程仓库操作
1. 远程仓库管理
git remote add origin 仓库地址
git remote -v
git remote remove origin
git remote rename origin newname2. 推送和拉取
git push -u origin master # 首次推送并建立跟踪
git push origin master
git push origin --delete 分支名
git push --tags # 推送所有标签
git pull origin master # 拉取并合并
git fetch # 获取远程更新(不合并)
git fetch --prune # 获取并清理远端已删除分支版本回退与撤销
1. 版本回退
git reset --hard HEAD^ # 回退到上一个版本
git reset --hard HEAD~100 # 回退到前100个版本
git reset --hard 提交ID # 回退到指定提交2. 查看历史版本
git reflog # 包括孤立提交在内的引用变更历史
git show HEAD@{5} # 查看 HEAD 的第5个历史状态
git show master@{yesterday} # 查看 master 昨天的状态3. 撤销修改
git checkout -- 文件名 # 丢弃工作区修改
git reset HEAD 文件名 # 撤销暂存(回到工作区)
git commit --amend -m "新的提交说明" # 修改上一次提交信息4. 撤销提交
git revert 提交ID # 生成一次新的“反向提交”完整工作流程示例
首次上传
# 1) 初始化
git init
# 2) 添加文件
git add .
# 3) 提交
git commit -m "首次提交"
# 4) 关联远程
git remote add origin https://github.com/username/repo.git
# 5) 推送
git push -u origin master日常开发流程
# 1) 查看状态
git status
# 2) 拉取最新
git pull origin master
# 3) 创建功能分支
git checkout -b feature/new-feature
# 4) 开发...
# 5) 暂存修改
git add .
# 6) 提交
git commit -m "feat: 添加新功能"
# 7) 切回主分支
git checkout master
# 8) 合并功能分支
git merge feature/new-feature
# 9) 推送
git push origin master
# 10) 删除功能分支
git branch -d feature/new-feature常见问题解决
1. 推送报错:failed to push some refs
原因:本地分支落后于远程分支
解决:
git pull origin master --rebase
git push origin master
# 强制推送会用本地的分支历史完全覆盖远程分支的历史。
git push origin master -f2. 合并冲突处理
git pull origin master
# 手动解决冲突
git add .
git commit -m "解决合并冲突"
git push origin master3. .gitignore 不生效
原因:文件已被跟踪。
解决:
git rm -r --cached .
git add .
git commit -m "更新 .gitignore"结束
更加详细的教程可以去看菜鸟教程的Git 教程。