Git笔记---其他常用操作

1. 忽略特殊文件

.gitignore 是 Git 中用于指定不需要跟踪 (track)的文件 / 目录的配置文件,核心作用是让 Git 自动忽略无用、临时或敏感文件,避免它们被误提交到远程仓库,保持仓库整洁和安全。

简单说:凡是不需要共享、仅本地存在或自动生成的文件,都该加入 .gitignore。

  • 本地 .gitignore(推荐)
    • **创建位置:**放在 Git 仓库的根目录(与 .git 文件夹同级),命名为 .gitignore(注意开头的点,无后缀);
    • **生效范围:**仅当前仓库(最常用,适合项目级忽略规则);
  • 全局 .gitignore
    • **生效范围:**对本地所有 Git 仓库生效(适合全局通用规则,如 IDE 配置、系统文件);

    • 创建与配置: 在任意位置创建,且可以任意命名,通过如下命令配置到git:

      bash 复制代码
      git 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 配置别名

  1. 临时别名: 在本地仓库外配置,关闭终端后失效,仅用于临时测试。

    bash 复制代码
    git config alias.别名 "原命令"
  2. 全局别名: 添加 --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"  # 美化日志(带分支图)
  3. 本地别名: 在本地仓库中进行配置(不加--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 创建标签

  • 创建轻量标签: 轻量标签仅需指定标签名和目标提交(默认最新提交)

    bash 复制代码
    git tag <标签名> [提交哈希/分支名](不指定则默认当前 HEAD 提交)
    # git tag v1.0.0-beta  # 给当前提交打轻量标签(测试版)
    # git tag v0.9.0 a1b2c3  # 给指定提交(哈希 a1b2c3)打轻量标签
  • 创建附注标签: 附注标签需添加 -a(annotated)参数,可附带详细注释

    bash 复制代码
    git 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 查看标签

  • 列出所有标签

    bash 复制代码
    git 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 中显示标签

    bash 复制代码
    git log --tags # 仅显示带标签的提交记录

3.3 推送标签到远程仓库

Git 标签默认不会随 git push 推送到远程,需手动指定标签推送(单个或所有)。

  • 推送单个标签

    bash 复制代码
    git push origin <标签名>  # 如 git push origin v1.0.0
  • 推送所有本地标签

    bash 复制代码
    git push origin --tags  # 一次性推送所有未推送的本地标签(谨慎使用,避免冗余标签)
    git push origin --follow-tags  # 仅推送"附注标签"(推荐:避免推送轻量临时标签)
  • 验证远程标签

    bash 复制代码
    git ls-remote --tags origin  # 列出远程所有标签
    git fetch origin --tags  # 拉取远程所有标签到本地

3.4 删除标签

  • 删除本地标签

    bash 复制代码
    git 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 命令)。
相关推荐
做cv的小昊2 小时前
科研论文PPT绘图技巧:绘制任意曲线三角形(胖三角形)并制作效果对比图
经验分享·笔记·学习·微软·ai绘画·数据可视化
霖003 小时前
ZYNQ——ultra scale+ IP 核详解与配置
服务器·开发语言·网络·笔记·网络协议·tcp/ip
小二·3 小时前
Git 高频操作命令大全(分类整理 + 修正说明)
大数据·git·elasticsearch
谅望者3 小时前
数据分析笔记10:数据容器
笔记·数据挖掘·数据分析
谅望者3 小时前
数据分析笔记05:区间估计
笔记·数据挖掘·数据分析
@游子4 小时前
内网渗透笔记-Day2
笔记
河铃旅鹿4 小时前
Android开发-java版:SQLite数据库
android·数据库·笔记·学习·sqlite
optimistic_chen5 小时前
【Java EE进阶 --- SpringBoot】AOP原理
spring boot·笔记·后端·java-ee·开源·aop
目南殇6 小时前
Git 命令基础使用指南:从初始化到提交的完整流程
git