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 命令)。
相关推荐
2301_764441334 小时前
Aella Science Dataset Explorer 部署教程笔记
笔记·python·全文检索
星海拾遗4 小时前
git rebase记录
大数据·git·elasticsearch
派大鑫wink5 小时前
【Java 学习日记】开篇:以日记为舟,渡 Java 进阶之海
java·笔记·程序人生·学习方法
ljh5746491196 小时前
PhpStorm 2022.3 版本中,修改使用 Git 提交时看到弹出式的对话框模式
ide·git·php·phpstorm
永远都不秃头的程序员(互关)6 小时前
大模型Agent落地实战:从核心原理到工业级任务规划器开发
笔记
TL滕7 小时前
从0开始学算法——第十八天(分治算法)
笔记·学习·算法
云闲不收7 小时前
git rebase
git
算法与双吉汉堡7 小时前
【短链接项目笔记】Day2 用户注册
java·redis·笔记·后端·spring
江上清风山间明月8 小时前
git pull和git checkout在恢复文件的区别
git·pull·checkout
思成不止于此8 小时前
【MySQL 零基础入门】MySQL 约束精讲(一):基础约束篇
数据库·笔记·sql·学习·mysql