配置与巡检
新环境初次使用前,建议逐层检查配置来源,避免混入旧账户信息:
git config --system --list # 系统级配置
git config --global --list # 当前用户配置
git config --local --list # 仓库内配置
git config --list --show-origin # 查看值来源
设置签名信息与常用别名:
git config --global user.name "Team Member"
git config --global user.email "[email protected]"
git config --global core.editor "code --wait"
git config --global alias.st status
.gitignore_global 用于跨项目忽略临时文件:
git config --global core.excludesfile ~/.gitignore_global
echo '.DS_Store' >> ~/.gitignore_global
工作区到提交的路径
掌握工作区 → 暂存区 → 本地仓库的跃迁方式:
git status -sb # 简明状态
git add <file> # 添加单个文件
git add . # 批量添加
git restore --staged <file> # 从暂存区撤回
git restore <file> # 丢弃工作区修改
commit规范
Conventional Commits 风格
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
<type>
feat: 新功能(feature)
fix: 修复 bug
docs: 文档更新
style: 代码格式(如缩进、空格等,不影响代码逻辑)
refactor: 代码重构(不修复 bug 或添加功能)
test: 增加或修改测试代码
chore: 其他变更(构建流程、辅助工具配置等)
perf: 性能优化
ci: CI 配置相关变更
(<scope>)
指出本次提交影响的模块或组件,比如 ui、api 等
<description>
简明扼要地说明此次提交的目的或变更内容。
[optional body]
对提交进行详细描述,可以包括变更原因、影响等。
[optional footer(s)]
footer(页脚,可选)
e.g.
feat(auth): 添加JWT认证支持
fix(api): 修复GET请求参数错误
docs(readme): 更新了安装说明的内容
refactor(core): 重构了数据处理算法
test(ui): 添加按钮组件的测试用例
提交阶段保持一次提交一个意图:
git commit -m "feat: add weekly report export"
git commit --amend --no-edit # 修补上一笔提交
需要拆分提交时,结合交互式暂存:
git add -p # 逐块选择变更
git commit --amend # 合并到上一笔提交
历史排查工具箱
排查问题离不开对历史的可视化理解:
git log --oneline --graph --decorate --all
精确定位修改细节:
git show <commit>
git diff HEAD~1 HEAD
git blame <file>
误操作后的补救:
git reflog # 查阅一切引用变化
git reset --hard <ref> # 回滚到指定引用
git cherry-pick <commit> # 挑选提交到当前分支
分支管理基础
日常操作中最常见的几种指令:
git branch # 查看本地分支
git branch -r # 查看远程分支
git switch <branch> # 切换分支
git switch -c feature/login # 新建并切换
合并前建议先同步远程最新状态:
git fetch origin # 抓取远程更新
git merge origin/develop # 合并远程分支
解决冲突后的提交流程:
git status # 找到冲突文件
# 手动处理冲突标记 <<<<<<< ======= >>>>>>>
git add <resolved-file>
git commit # 完成合并提交
远程同步与清理
推送与拉取保持显式:
git pull --rebase origin develop
推送时附带追踪关系:
git push -u origin feature/login
清理远程已删除分支:
git fetch -p
重命名或删除远程分支:
git branch -m old-name new-name
git push origin :old-name
git push -u origin new-name
标签与版本号
语义化发布常用以下命令:
git tag -a v1.2.0 -m "Release v1.2.0"
git push origin v1.2.0
删除标签:
git tag -d v1.1.0
git push origin :refs/tags/v1.1.0
临时存档(stash)
切换分支前暂存未完成代码:
git stash push -m "wip: dashboard chart"
git stash list
恢复并删除该记录:
git stash pop stash@{0}
保留备份恢复:
git stash apply stash@{0}
git stash drop stash@{0}
快速排查 checklist
git status是否干净?- 是否同步了最新的
origin/<branch>? - 合并冲突是否全部解决并重新
git add? git log --oneline -5检查最近提交是否符合规范?- 推送前确认标签、分支名无误?
.gitignore 文件
.gitignore 文件,用来存放忽视文件,不被git检查
# 这样就会匹配所有以txt结尾的文件
*.txt
# 虽然上面排除了所有txt结尾的文件,但是这个不排除
!666.txt
# 也可以直接指定一个文件夹,文件夹下的所有文件将全部忽略
test/
# 目录中所有以txt结尾的文件,但不包括子目录
xxx/*.txt
# 目录中所有以txt结尾的文件,包括子目录
xxx/**/*.txt
通过 git clone 克隆一个远程仓库时,Git 会自动创建一个指向该远程仓库的引用,并默认命名为 origin,origin 是远程仓库的标识符,而不是一个具体的分支。它帮助 Git 知道你要从哪个远程仓库拉取代码或推送代码