git

git
可爱可倾1. gitignore
.gitignore 文件用于指定哪些文件或目录在 Git
版本控制中被忽略。它可以避免将不必要的文件(如编译产物、临时文件等)提交到版本库中。
# 忽略特定文件
secret.txt
# 忽略特定目录
temp/
# 忽略特定目录下的所有文件(但保留temp目录本身)
# 如果 temp/ 目录是空的,Git 默认不会追踪空目录,通常要用 .gitkeep 之类的文件强制保留
temp/*
# 忽略特定目录下的所有 .tmp 文件
temp/*.tmp
# 忽略特定目录下的所有文件和子目录,但保留某个文件
temp/*
!temp/keep.txt
# 忽略特定目录下的所有文件和子目录,但保留某个目录
temp/*
!temp/keep/
2. 清除已跟踪的文件
不会删除 Git 提交历史中的文件,它 只删除工作区(working directory)和未跟踪的文件,不会影响 Git 版本库的提交记录:
git clean -n -d -x # 预览即将删除的文件
git clean -f -d -x # 确认无误后执行删除
3. 回退以前的提交
3.1 reset 硬回退
git reset --hard commit id
此时再推到远程仓库用 git push 会报错,需要用
git push -f 强推上去
3.2 revert 软回退
git revert -n commit id
此时会在当前分支上生成一个新的提交,内容是将指定的提交回退到当前分支的状态。
注意:-n
选项表示不会立即创建一个新的提交,而是将变更放入暂存区
4. 提交规范
4.1 提交信息的基本结构
一个标准的 Git 提交信息通常包括三部分:
<类型>(<范围>): <简短描述>
<详细描述>
<页脚注释>
- 类型 (Type):描述提交的类别,指明提交的性质。
- 范围 (Scope) :指定变更的具体模块、功能或文件。
- 简短描述:对本次提交的简要总结。
- 详细描述(可选):提供更详细的信息,解释为什么要做这个提交、如何做的、解决了什么问题等。
- 页脚注释(可选):链接到项目管理工具中的任务、bug 或故事等。
4.2 常见的提交类型
这些类型通常是采用 Conventional Commits 标准的常见值,目的是使提交信息一致且具有结构化。
fix: 类型 为 fix 的提交表示在代码库中修复了一个 bug。feat: 类型 为 feat 的提交表示在代码库中新增了一个功能。BREAKING CHANGE: 在脚注中包含 BREAKING CHANGE: 或 <类型>(范围) 后面有一个 ! 的提交,表示引入了破坏性 API 变更。 破坏性变更可以是任意类型提交的一部分。build: 用于修改项目构建系统,例如修改依赖库、外部接口或者升级 Node 版本等;chore: 用于对非业务性代码进行修改,例如修改构建流程或者工具配置等;ci: 用于修改持续集成流程,例如修改 Travis、Jenkins 等工作流配置;docs: 用于修改文档,例如修改 README 文件、API 文档等;style: 用于修改代码的样式,例如调整缩进、空格、空行等;refactor: 用于重构代码,例如修改代码结构、变量名、函数名等但不修改功能逻辑;perf: 用于优化性能,例如提升代码的性能、减少内存占用等;test: 用于修改测试用例,例如添加、删除、修改代码的测试用例等。
每次提交应该只包含一个逻辑变更,避免混合多个不相关的修改。
5. git全局配置推荐
[user]
name = xx
email = xx@xx.com
[http "https://github.com"]
proxy = 127.0.0.1:7890 # GitHub 代理,可根据实际网络环境修改
[core]
autocrlf = true # 自动转换换行符,Windows 推荐 true,macOS/Linux 推荐 input
quotepath = false # 中文路径不再转义显示为 \uXXXX
editor = code --wait # 默认编辑器 VSCode,可改为 notepad 或 vim
preloadindex = true # 加快 git status 速度
fscache = true # Windows 下缓存文件系统信息,提高性能
untrackedCache = true # 加速未跟踪文件检测,特别是大仓库
[color]
ui = auto # Git 命令输出自动彩色显示(log、diff 等)
[alias]
st = status # git st → git status
co = checkout # git co → git checkout
br = branch # git br → git branch
ci = commit # git ci → git commit
df = diff # git df → git diff
lg = log --graph --decorate --pretty=format:'%C(yellow)%h%Creset -%C(cyan)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
# 美观的提交历史,带分支、标签、图形化显示
last = log -1 HEAD # 查看最后一次提交
unstage = reset HEAD -- # 取消暂存区文件
amend = commit --amend --no-edit # 修改最后一次提交但不更改提交信息
[diff]
tool = vscode
algorithm = histogram # 更智能的 diff 算法,处理大文件和移动代码块更准确
colorMoved = plain # 启用移动代码块检测,显示更直观
mnemonicPrefix = true # diff 前缀更易理解
renames = true # 自动检测文件重命名
indentHeuristic = true # 更智能的 diff 块划分
compactionHeuristic = true # 优化 diff 输出可读性
[difftool "vscode"]
cmd = code --wait --diff $LOCAL $REMOTE # 使用 VSCode 作为 diff 工具
[merge]
tool = vscode
[mergetool "vscode"]
cmd = code --wait $MERGED # 使用 VSCode 作为 merge 工具
[pull]
rebase = false # 避免默认 rebase,可根据个人习惯改 true
[push]
default = simple # 避免推送到错误分支
autoSetupRemote = true # 新建分支时自动设置上游分支
followTags = true # 推送 commit 时自动推送关联的 tag
[init]
defaultBranch = master # 初始化仓库默认分支名,可改为 main
[column]
ui = auto # 列表命令自动对齐输出
[branch]
sort = -committerdate # 分支列表按最近提交时间排序
[tag]
sort = version:refname # 标签列表按版本号排序
[fetch]
prune = true # 自动删除远程已删除的分支
pruneTags = true # 自动删除远程已删除的标签
# fetch.all 可选,根据项目是否多远程决定是否开启
# git config --global fetch.all true
[help]
autocorrect = prompt # 输入命令有误时提示纠正,避免误操作
[commit]
verbose = true # 提交时显示 diff 内容,方便检查
[rerere]
enabled = true # 启用冲突重用功能
autoupdate = true # 自动应用已解决的冲突
[rebase]
autoStash = true # rebase 前自动 stash,完成后自动 pop
autoSquash = true # 自动处理 fixup!/squash! 提交
missingCommitsCheck = warn # 丢失提交时警告
[stash]
showPatch = true # stash show 默认显示 diff
[status]
submoduleSummary = true # 显示子模块变更摘要
showStash = true # 显示 stash 数量
aheadBehind = true # 显示分支领先/落后信息
[index]
threads = true # 多线程加速索引操作
评论
匿名评论隐私政策
TwikooGiscus
✅ 若未加载出评论区,请刷新页面~






