介绍
Git是一个开源的分布式版本控制系统,用于高效管理任何规模的项目。以下介绍日常高频命令,覆盖从建仓到推送的完整流程。
常用命令 git
## git init 初始化仓库git仓库
git init
## git add . 添加文件到暂存区
git add .
## git add filePath
git add file/index.html
## git status 查看仓库当前的状态,显示有变更的文件。
git status
## git reset 撤销暂存(默认 --mixed:保留工作区修改,只清空暂存区)。加 --hard 会丢弃工作区修改,谨慎操作
git reset
## git reset --hard <commit> 强制回退到指定提交,丢弃之后的所有修改(已推送的分支慎用)
## git log 查看历史提交记录
git log
## git push 上传远程代码并合并
git push
## git pull 下载远程代码并合并
git pull
分支branch
分支(branch)一个分支代表一条独立的开发线。 使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作,下面介绍分支的常用操作
## git branch 列出你在本地的分支
git branch
## git branch branchName 创建分支
git branch develop
## git checkout branchName 切换分支
git checkout develop
## git push origin branchName 推送本地分支到远程
git push origin develop
## git branch -d branchName 删除分支
git branch -d develop
## git merge branchName 将改分支代码合并到当前所在分支
git merge develop
标签 tag
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。
## git tag 列出已有的标签
git tag
## git show tagName 查看标签提交信息
git show v1.0.0
## git tag -a tagName 提交版本号 -m 附注信息 创建标签
git tag -a v1.0.0 -m "正式版本1.0.0"
## git tag -d tagName 删除标签
git tag -d v1.0.0
## git push origin tagName 将指定的标签上传到远程仓库
git push origin v1.0.0
## git push origin --tags 将所有不在远程仓库中的标签上传到远程仓库
git push origin --tags
## git branch newBranchName tagName 根据标签创建分支
git branch develop_01 v1.0.0
暂存 stash
当你在一个分支上进行开发,工作还没完成,但需要切换到其他分支时,可以用 git stash 暂时保存当前工作进度。 当你需要拉取远程仓库的代码,但本地有未提交的修改时,可以先 stash 当前修改,完成拉取后再恢复之前的工作。
## 保存当前工作区的所有未提交的修改
git stash
## 列出所有的 stash 记录
git stash list
## 恢复最近的 stash 并删除记录
git stash pop
## 恢复最近的 stash,但不删除记录
git stash apply
## 删除最近的 stash
git stash drop
## 清空所有的 stash 记录
git stash clear
实战案例:我最常用的 5 个命令
上面是手册,下面是我在这个博客仓库里真实高频用的 5 个:
git status --porcelain:脚本里判断工作区脏不脏就靠它(--porcelain输出稳定可解析,普通status是给人看的)。我的自动部署脚本第一件事就是查这个,脏了直接拒绝部署。git log --oneline -5:看最近提交,一眼定位”我刚才改了啥”。git diff --stat:推之前扫一眼改了哪些文件,防止把.obsidian/这种垃圾带进去。git stash:改到一半被叫去修线上 bug,stash存档,切分支修完再pop回来。比commit -m "wip"干净。git revert <commit>:线上出问题回滚用这个,不用reset。revert是”新增一个反向提交”,历史是追加的,安全;reset --hard是”改写历史”,推过的分支用了就是灾难。
新手建议:先把这 5 个练熟,覆盖 90% 日常。rebase、cherry-pick、bisect 等真遇到了再学,现背现忘。
