1. 忽略特殊文件
.gitignore 是 Git 中用于指定不需要跟踪 (track)的文件 / 目录的配置文件,核心作用是让 Git 自动忽略无用、临时或敏感文件,避免它们被误提交到远程仓库,保持仓库整洁和安全。
简单说:凡是不需要共享、仅本地存在或自动生成的文件,都该加入 .gitignore。
- 本地 .gitignore(推荐)
- **创建位置:**放在 Git 仓库的根目录(与 .git 文件夹同级),命名为 .gitignore(注意开头的点,无后缀);
- **生效范围:**仅当前仓库(最常用,适合项目级忽略规则);
- 全局 .gitignore
-
**生效范围:**对本地所有 Git 仓库生效(适合全局通用规则,如 IDE 配置、系统文件);
-
创建与配置: 在任意位置创建,且可以任意命名,通过如下命令配置到git:
bashgit config --global core.excludesfile 文件路径
-
.gitignore 文件的内容就是需要忽略的文件名,支持shell的各种通配符。
如果不想忽略某个文件,就在其文件名前加上感叹号" ! "。例如,我希望忽略所有" .so "文件,但是不希望忽略" c.so ",那么文件内容就可以写:
bash
*.so
!c.so
2. Git 别名
Git 别名(Alias)是为常用 Git 命令设置「简称」的功能,核心作用是减少重复输入(比如用 git st 代替 git status),尤其适合 git commit -m、git pull --rebase 这类长命令,大幅提升开发效率。
2.1 配置别名
-
临时别名: 在本地仓库外配置,关闭终端后失效,仅用于临时测试。
bashgit config alias.别名 "原命令" -
全局别名: 添加 --global 参数,配置后所有本地仓库都能使用,是最常用的方式。
bash# 基本语法(全局生效) git config --global alias.别名 "原命令" # 示例:配置常用全局别名 git config --global alias.st "status" # 状态查询 git config --global alias.co "checkout" # 切换分支/恢复文件 git config --global alias.br "branch" # 分支管理 git config --global alias.cm "commit -m" # 提交(带消息) git config --global alias.pu "push" # 推送 git config --global alias.pl "pull" # 拉取 git config --global alias.pullr "pull --rebase"# 变基拉取(协作推荐) git config --global alias.unstage "reset HEAD --" # 撤销暂存(git unstage 文件名) git config --global alias.last "log -1 HEAD" # 查看最后一次提交记录 git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" # 美化日志(带分支图) -
本地别名: 在本地仓库中进行配置(不加--global参数)。
bash# 进入目标仓库后执行 git config alias.别名 "原命令"
2.2 查看别名
bash
# 查看全局别名
git config --global --get-regexp alias
# 查看当前仓库别名(本地+全局)
git config --get-regexp alias
# 直接查看完整配置(含别名)
git config --list # 全局+本地
git config --global --list # 仅全局
2.3 删除别名
bash
# 删除全局别名
git config --global --unset alias.别名
# 删除本地别名(需在对应仓库执行)
git config --unset alias.别名
# 示例:删除全局别名 git st
git config --global --unset alias.st
3. Git 标签
Git 标签(Tag)是用于标记仓库中重要提交节点的静态引用,核心作用是锁定关键版本(如 v1.0.0 发布版、v2.1.1 修复版),方便后续追溯、回滚或发布。
Git 标签分为两类,适用于不同场景,核心区别在于是否包含额外元数据:
|------|-----------------------|---------------|-------------------|
| 类型 | 特点 | 适用场景 | 存储方式 |
| 轻量标签 | 仅指向一个提交的 "指针",无额外信息 | 本地临时标记、内部测试版本 | 仅存储提交哈希值,无独立对象 |
| 附注标签 | 包含作者、日期、注释、GPG 签名等元数据 | 正式版本发布 | 作为独立对象存储在 Git 数据库 |
3.1 创建标签
-
创建轻量标签: 轻量标签仅需指定标签名和目标提交(默认最新提交)
bashgit tag <标签名> [提交哈希/分支名](不指定则默认当前 HEAD 提交) # git tag v1.0.0-beta # 给当前提交打轻量标签(测试版) # git tag v0.9.0 a1b2c3 # 给指定提交(哈希 a1b2c3)打轻量标签 -
创建附注标签: 附注标签需添加 -a(annotated)参数,可附带详细注释
bashgit tag -a <标签名> -m "标签注释" [提交哈希] # git tag -a v1.0.0 -m "正式发布 1.0.0 版本:支持用户登录、支付功能" # 当前提交 # git tag -a v1.1.0 -m "修复支付回调bug,优化首页加载速度" d4e5f6 # 给历史提交 d4e5f6 打标签
3.2 查看标签
-
列出所有标签
bashgit tag # 按字母顺序列出所有标签(仅显示标签名) git tag [-l/--list] "v1.*" # 模糊匹配标签(如仅显示 v1 开头的版本) -
查看标签详情(含注释、关联提交)
bash# 查看附注标签详情(含作者、日期、注释、关联提交) git show v1.0.0 # 查看轻量标签(仅显示关联的提交信息,无额外注释) git show v1.0.0-beta # 仅查看标签的提交记录(不显示文件差异) git show --oneline v1.0.0 -
查看提交对应的标签:若想知道某个提交是否被打标签,可在 git log 中显示标签
bashgit log --tags # 仅显示带标签的提交记录
3.3 推送标签到远程仓库
Git 标签默认不会随 git push 推送到远程,需手动指定标签推送(单个或所有)。
-
推送单个标签
bashgit push origin <标签名> # 如 git push origin v1.0.0 -
推送所有本地标签
bashgit push origin --tags # 一次性推送所有未推送的本地标签(谨慎使用,避免冗余标签) git push origin --follow-tags # 仅推送"附注标签"(推荐:避免推送轻量临时标签) -
验证远程标签
bashgit ls-remote --tags origin # 列出远程所有标签 git fetch origin --tags # 拉取远程所有标签到本地
3.4 删除标签
-
删除本地标签
bashgit tag -d <标签名> # 如 git tag -d v1.0.0-beta(删除本地轻量标签) git tag -d v1.0.0 # 删除本地附注标签(语法相同) -
删除远程标签(本地标签删除后,需同步删除远程标签)
bash# 方式1:推荐(明确删除远程标签) git push origin --delete <标签名> # 如 git push origin --delete v1.0.0-beta # 方式2:等价于方式1(通过"推送空引用"删除) git push origin :refs/tags/<标签名> # 如 git push origin :refs/tags/v1.0.0-beta
3.5 切换到标签
标签是静态提交的引用,切换到标签后会进入「分离头指针(detached HEAD)」状态(即不在任何分支上),适合查看历史版本代码:
bash
# 切换到指定标签(查看对应版本的代码)
git checkout v1.0.0
# 若需在标签基础上修改代码(如修复旧版本bug),需创建新分支(避免丢失修改)
git checkout -b fix-v1.0.0 v1.0.0 # 基于 v1.0.0 标签创建 fix-v1.0.0 分支
注意事项:
- 分离头指针状态下,修改代码后提交的记录不会关联到任何分支,若切换回其他分支,这些提交可能丢失;
- 若需保留修改,必须基于标签创建新分支(如上述 checkout -b 命令)。