git是什么

  • 一个开源的分布式版本控制系统

工作区,暂存区,版本库

  • 版本库又名仓库(Repository),里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者还原
  • 将工作区文件放入版本库:先 git add 添加至暂存区,最终统一 git commit 提交至仓库

工作流程

将远程仓库克隆至本地,从而无需联网也能正常工作,只需有网时推送即可实现同步

分支

  • Git 分支管理是 Git 强大功能之一,能够让多个开发人员并行工作,开发新功能、修复 bug 或进行实验,而不会影响主代码库
  • Git 分支实际上是指向更改快照的指针
分支名称 作用描述 合并回 备注
master 生产环境稳定分支,代表线上发布的版本 不合并到其它分支 只合并稳定代码,打标签发布
release 发布准备分支,做最终测试和修复 合并到 main 和 develop 用于发布准备和小修小补
develop 集成开发分支,汇聚所有功能分支的代码 合并到 main 开发主线,功能完成后合并这里
feature 功能开发分支,开发单个新功能 合并到 develop 隔离功能开发,避免冲突
hotfix 线上紧急修复分支 合并到 main 和 develop 解决线上问题,快速发布
private 私有分支,个人或隐藏开发 根据需要合并 非标准分支,用于实验或私有开发

Git 常用指令分类速查表

分类 Git 指令 解释
基础操作 git init <directory> 在指定目录创建空的 Git 仓库,不带参数则在当前目录创建。
git clone <repo> 克隆指定仓库到本地,可为本地路径或 HTTP/SSH 地址。
git add <file/dir> 将文件或目录的修改加入暂存区。
git commit -m "<message>" 提交暂存区的修改并附加提交信息。
git status 显示已暂存、未暂存、未跟踪的文件状态。
git diff 比较工作区和暂存区的差异。
git rm <file> 删除文件并更新暂存区
分支管理 git branch 列出所有本地分支。
git switch -c <branch> 创建并切换到新分支,去掉 -c 则切换到已有分支。
git merge <branch> 将指定分支合并到当前分支,实际直接将HEAD指针从当前分支指向指定分支。
git merge --no-ff -m "<message>" <branch> 非快速合并(no fast-forward),在merge时生成一个新的commit,多出一个合并节点,保留完整分支合并记录
git rebase <base> 将当前分支基于 <base> 重新变基。
git rebase -i <base> 交互式变基到 <base>
git cherry-pick <commit> 将指定提交应用到当前分支。
git branch -d <name> 删除分支
远程仓库 git remote -v 查看远程仓库地址。
git remote add <name> <url> 添加远程仓库连接。
git fetch <remote> <branch> 从远程获取分支提交,不合并。
git pull <remote> 获取远程当前分支并立即合并。
git pull --rebase <remote> 拉取并以变基方式合并远程修改。
git push <remote> <branch> 将本地分支推送到远程,没有则自动创建。
git push <remote> --force 强制推送到远程(危险操作)。
git push <remote> --tags 推送所有本地标签到远程。
日志与查看 git log 显示提交历史。
git log -<limit> 限制显示提交数量,例如 git log -5
git log --oneline 单行显示每条提交记录。
git log --author="<pattern>" 按作者搜索提交记录。
git log --grep="<pattern>" 按提交信息搜索提交记录。
git log --graph 图形化显示分支结构。
git show <commit> 显示指定提交的详细信息。
git reflog 显示本地 HEAD 的变更历史。
撤销与回退 git revert <commit> 创建一个新的提交来撤销指定提交的更改。
git reset 清空暂存区但保留修改。
git reset --hard 清空暂存区并删除修改。
git reset <commit> 回滚到指定提交,保留修改。
git reset --hard <commit> 回滚到指定提交并删除修改。
git checkout -- <file> 丢弃工作区对指定文件的修改。可以还原删除
git stash 暂存当前工作区和暂存区的修改。
git stash pop 恢复最近一次暂存并删除该暂存记录。
标签管理 git tag 列出所有标签。
git tag <tagname> 创建轻量标签。
git tag -a <tagname> -m "<msg>" 创建附注标签。
git push <remote> <tagname> 推送单个标签到远程。
git push <remote> --tags 推送所有本地标签到远程。
配置管理 git config --global user.name <name> 全局设置用户名。
git config --global user.email <email> 全局设置用户邮箱。
git config --global alias.<alias-name> <git-command> 设置 Git 命令别名。
git config --system core.editor <editor> 设置系统级默认文本编辑器。
git config --global --edit 编辑全局配置文件。

Git 文件状态

缩写 含义 说明
M Modified(已修改) 文件内容被修改但未提交
A Added(已新增) 新增文件已被暂存(staged)
U Updated but unmerged(有冲突) 合并时冲突,文件需解决冲突
D Deleted(已删除) 文件被删除
R Renamed(重命名) 文件被重命名
C Copied(复制) 文件被复制
?? Untracked(未跟踪) 新文件未加入版本控制
S Staged(已暂存) 文件已加入暂存区