Git学习
发表于|更新于
|字数总计:1466|阅读时长:5分钟
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(已暂存) |
文件已加入暂存区 |