配置与巡检

新环境初次使用前,建议逐层检查配置来源,避免混入旧账户信息:

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 会自动创建一个指向该远程仓库的引用,并默认命名为 originorigin 是远程仓库的标识符,而不是一个具体的分支。它帮助 Git 知道你要从哪个远程仓库拉取代码或推送代码