1062 字
5 分钟
git 教程
Git
安装与配置
# Linux 安装sudo apt install -y vim git
# 全局配置用户信息git config --global user.name "aLinChe"git config --global user.email "1129332011@qq.com"git config --global core.editor vimgit config --global color.ui true
创建仓库与基础操作
git init [project_name]/// orgit clone https://github.com/DragonOS-Community/DragonOS
git statusgit add .git commit -m "feat(add-func): feat template-function-add to ..."
git fetchgit pull --allgit pull --rebase
git pushgit push -f
分支操作
# 创建新分支并切换到该分支git checkout -b [branch-name]# 切换到对应分支git checkout [branch-name]
git branch -vvgit branch -a
# 删除本地分支git branch -d [branch-name] # 安全删除(已合并)git branch -D [branch-name] # 强制删除(未合并)
合并与变基策略
git checkout mastergit merge feat/add_branch # 合并指定分支(feat/add_branch)到当前分支(master)git push # 推送合并结果git checkout feat/add_branch # 切换回原开发分支/// orgit checkout feat/add_branchgit rebase master # 将当前分支变基到mastergit branch -f master feat/add_branch # 移动master指针 orgit checkout master # 切换到mastergit push # 推送更新git checkout feat/add_branch # 切换回原开发分支
提交历史修改
# 撤销与重置git reset HEAD~n # 撤销最近 n 次提交git reset --hard HEAD~n # 丢弃最近 n 次提交git reset [hashed]git reset --keep [hashed]
git revert [hashed] # 创建新提交来撤销更改
git push origin [branch-name]git branch -d [branch-name]git branch -D [branch-name]git push origin -d [branch-name]
git rebase -i HEAD~nsquash# pick - 保留提交# reword - 修改提交信息# edit - 修改提交内容# squash - 合并到前一个提交# drop - 丢弃提交
储藏与拣选操作
# 临时储藏更改git stashgit stash save "描述信息"git stash listgit stash popgit stash apply stash@{n}git stash drop stash@{n}
# 选择性应用提交git cherry-pick [commit-hash]
git cherry-pick [start-hash]^..[end-hash]
git cherry-pick [hash1] [hash2] [hash3]
远程仓库管理
git remote -vgit remote add [shortname] [url]git remote set-url --push upstream no_push # 删掉 upstream_url 防止意外 push -fgit branch -u [remote]/[branch] [当前分支]git branch --set-upstream-to=upstream/master origin/mastergit branch -vv -a
git remote show origingit push -u origin feat/add # 首次推送并建立关联 ## 等效于 git branch -u origin/feat/addgit branch --unset-upstream # 取消错误的追踪
# 删除远程分支git push origin -d [branch-name]
git fetch upstreamgit checkout mastergit rebase upstream/master
git archive
子模块操作
git submodule add https://github.com/user/submodule.git # 添加子模块
git clone --recurse-submodules https://github.com/user/repo.git # 克隆包含子模块的仓库
git submodule update --init --recursive # 更新子模块
最佳实践总结
- 提交规范:使用语义化提交信息(feat:, fix:, docs:, 等)
- 分支策略:
- main/master分支用于生产环境
- develop分支作为集成分支
- 功能分支(feat/*)用于功能开发
- 定期同步:频繁执行fetch和pull —rebase避免冲突
- 保持历史整洁:本地分支使用(rebase)变基,公共分支使用(merge)合并
- 原子化 commit 提交:适当使用 squash
- PR 前必做 rebase 整理
Git 实战任务书
Task 1:原子化提交练习
情景:你正在开发用户注册功能,已完成三个部分:
- 创建用户模型(models/user.py)
- 实现注册API(api/auth.py)
- 添加注册页面(UI/register.html)
要求:
- 为每个部分创建独立的提交
- 提交信息遵循语义化规范(feat/fix/docs等)
- 确保每个提交都是可独立构建的
Task 2:交互式变基合并
情景:在Task 1的后续开发中,你为注册功能依次
创建了5个提交:
- feat(user): 基础模型
- fix(user): 修复密码字段
- feat(auth): API框架
- fix(user): 修复密码字段格式
- feat(ui): 注册页面UI
- fix(auth): 解决验证问题
要求:
- 将5个提交合并为3个有意义的提交:
- 用户模型相关(1+2+4)
- API相关(3+5)
- UI相关(5)
- 重写提交信息为专业格式
Task 3:热修复集成
情景:生产环境发现紧急bug(急急急急急):
- main分支版本:v1.2.0
- 当前开发分支:feat/user-profile
- 需要同时修复:
- 修复用户模型结构(models/user.py)
- 添加错误提示信息(UI/errors.py)
要求:
- 保存你现在开发到一半的文件
- 为热修复创建独立分支
- 提交修复到main分支
- 将修复同步到原来的开发分支
Task 4:团队协作
要求:
- 学会使用
合适的工具
(比如 VSCode 图形化界面、相关的Github插件):解决冲突,view PR,comment等等