设计师用 Git 听起来像是个伪需求:命令行、冲突合并、分支切来切去,哪一项都跟设计软件的操作习惯对不上。但 Show HN 上这个 "Git for Designers" 项目,思路不是把设计师硬拽进终端,而是把版本控制的核心逻辑搬到视觉化界面里。这次我们就来看它到底解决什么问题、适合谁、怎么落地。
对于开发者来说,Git 是常识;对于设计师团队来说,版本管理和协作一直停留在"最终版_v9_再也不改.png"这个阶段。Git for Designers 想做的事情,本质上是用类 Git 的版本概念管理设计资产:每次修改形成版本节点,随时可以回滚,多人协作不覆盖彼此的工作,文件状态一目了然。它的核心不是替代 Figma 或 Sketch,而是给本地设计文件的迭代过程加一套"后悔药 + 协作轨道"。
这篇文章会先给核心能力速览和适用场景,再讲 Git 环境准备、仓库初始化、提交与分支操作、批量任务的落地方式,以及一组高频报错的排查方法。不管是设计师想自建一套文件版本管理流程,还是开发者想帮设计团队搭建协作基础设施,都能在这里找到可执行的步骤。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | 面向设计师的 Git 工作流/版本管理工具方案 |
| 核心概念 | 借用 Git 的分支、提交、回滚逻辑管理设计文件版本 |
| 主要功能 | 文件版本管理、提交记录、分支切换、冲突定位、回滚恢复 |
| 适用对象 | UI/UX 设计师、设计团队、设计工程协同团队 |
| 使用门槛 | 需要基础的 Git 安装与配置;设计人员可借助 GUI 客户端操作 |
| 支持平台 | 与 Git 本身一致,支持 Windows/macOS/Linux |
| 启动方式 | 命令行初始化仓库 + GUI 客户端可视化操作 |
| 接口能力 | Git 原生命令行 / API 由托管平台(GitHub/GitLab/Gitea)提供 |
| 批量任务 | 支持通过脚本批量提交、批量处理文件变更 |
| 适合场景 | 设计文件本地迭代、多人协作、设计稿回溯、团队素材版本管理 |
需要先说明一点:这个项目是否能做到"设计师完全不懂命令也能用",取决于是否配套了图形化界面。如果只是把 Git 命令封装成几个按钮,那设计师的上手成本已经大幅降低;如果还需要自己敲命令,那更合适的是让开发者搭好基础环境,设计师只负责点 GUI 按钮。
2. 适用场景与使用边界
2.1 适合谁用
- 独立设计师:个人作品集、设计源文件需要多个版本迭代,今天改一版,下周又想找回上周的感觉,Git 的提交记录天然适合做版本快照。
- 设计团队:多人同时维护一套设计源文件,尤其是 Sketch、Figma 本地导出包、PSD、切片资源等文件类资产,需要防止互相覆盖。
- 设计与研发协作:开发需要知道设计稿在哪个版本定稿,设计师需要知道开发取的是哪个版本,Git 的 commit message 和 tag 可以形成"设计-开发对照表"。
- 需要批量处理设计资源的人:大量素材要归档、改名、按版本导出,写脚本配合 Git 操作远比手动复制文件可靠。
2.2 解决什么问题
-
文件名混乱:
最终版_v1、真最终版_v2、绝对不改了_v3、领导又改了_v4,这种命名方式在 Git 仓库里可以彻底消失。 -
版本回滚困难:改坏了想撤回,没有历史记录只能靠手动备份,Git 的一条
git checkout或git reset就能恢复到任意历史节点。 - 多人协作冲突:两个设计师同时编辑同一个文件包,在 Git 工作流下会明确提示冲突发生在哪个文件,而不是后保存的人默默覆盖先保存的人。
- 没有审计记录:谁在什么时候改了什么文件,Git log 是完整可追溯的。
2.3 不适合什么场景
- 实时在线协作:Git 是异步版本管理工具,不是 Figma 那种多人同步编辑的实时画布。
- 超大二进制文件:设计和排版源文件如果是几个 GB 的 PSD、视频工程文件,用 Git 管理需要引入 Git LFS,否则仓库体积会迅速膨胀。
- 对 Git 完全抗拒的团队:如果团队成员连 GUI 客户端都不愿意打开,推行这个方案只会变成形式主义。
2.4 合规与安全边界
这里需要明确提醒:设计文件往往包含未发布的产品界面、品牌素材、用户数据截图等敏感内容。搭建 Git 仓库后,默认全量历史都保留在仓库里,一旦推送到远端或误公开,等于把整个版本历史暴露出去。建议:
- 内部项目优先使用私有仓库或内网 Git 服务,不要随手推到公开平台。
- 涉及版权素材、未公开设计稿、客户资产时,确认文件本身有权使用和传播。
- 公司项目先征得设计负责人和法务同意,再纳入 Git 版本管理。
- 包含用户个人信息、支付页面截图、后台数据视图的文件不要入库,可用占位图代替。
3. Git 环境准备与前置条件
3.1 安装 Git
Windows 用户从 Git 官网下载安装包,或者使用国内镜像加速下载。安装时建议勾选"Git Bash Here"和"Git GUI Here"两个选项,后续操作会方便很多。
安装完成后,在命令行验证版本:
git --version
如果系统提示"git 不是内部或外部命令"或"无法将 git 项识别为 cmdlet、函数、脚本文件或可运行程序的名称",说明 Git 没有正确安装,或者没有把 Git 的
cmd
目录加到系统 PATH。这时需要重新执行安装程序,在安装向导的 "Adjusting your PATH environment" 步骤选择 "Git from the command line and also from 3rd-party software"。
macOS 用户可以使用 Homebrew:
brew install git
也可以直接使用 Xcode Command Line Tools 自带的 Git:
xcode-select --install
Linux 用户根据发行版选择对应命令:
# Debian/Ubuntu
sudo apt install git
# CentOS/RHEL
sudo yum install git
3.2 首次全局配置
安装了 Git 之后,第一件事是配置用户名和邮箱。这个信息会记录在每次提交里,后续的提交记录、冲突定位、代码评审都依赖它。
git config --global user.name "your-name"
git config --global user.email "your-email@example.com"
--global
表示全局生效,也可以去掉
--global
针对某个仓库单独配置。
还要建议设置默认分支名。新版 Git 默认使用
master
,但很多团队已经切换到
main
:
git config --global init.defaultBranch main
3.3 配置 SSH 免密(推荐)
如果通过 HTTPS 方式操作 Git 仓库,每次 push 都要输账号密码,体验很差。SSH 免密可以一次配置长期使用。
生成 SSH 密钥:
ssh-keygen -t ed25519 -C "your-email@example.com"
一路回车生成密钥后,查看公钥内容:
cat ~/.ssh/id_ed25519.pub
把输出内容复制到 Git 托管平台(GitHub、GitLab、Gitea 等)的 SSH Keys 设置页面里。
验证是否配置成功:
ssh -T git@github.com
看到类似 "Hi xxx! You've successfully authenticated" 的提示就说明成功了。注意这里使用的是 git 协议,不是 https,所以之后 clone 仓库时要选择 SSH 地址。
3.4 选择 GUI 客户端
纯命令行对设计师不友好,但 Git 的 GUI 客户端生态很成熟:
- Sourcetree:免费,Windows/macOS 都有,界面清晰,适合从零开始学习 Git。
- GitHub Desktop:GitHub 官方出品,操作极简,适合个人项目。
- GitKraken:颜值高、交互流畅,支持 Git Flow,但部分高级功能收费。
- VS Code 内置 Git:开发者和设计师协作时,直接在 VS Code 里看变更、提交、推送。
- 小乌龟(TortoiseGit):Windows 老牌客户端,右键菜单集成,适合习惯资源管理器操作的用户。
如果 Git for Designers 项目本身提供了配套 GUI,优先用项目自带的;如果没有,Sourcetree 或 GitHub Desktop 是最容易上手的选择。
4. 初始化仓库与基础版本操作
4.1 创建仓库
假设设计师有一个设计稿文件夹
brand-design
,里面是各种格式的源文件和导出素材。进入目录并初始化 Git 仓库:
cd brand-design
git init
此时目录里会生成隐藏的
.git
文件夹,这就是版本历史的存放位置。
4.2 添加 .gitignore
设计项目里通常有大量不需要纳入版本管理的文件:系统生成的文件、临时缓存、本地配置、超大的预览缓存等。必须建一个
.gitignore
文件:
# 操作系统文件
.DS_Store
Thumbs.db
# 设计软件临时文件
*.tmp
# 本地配置文件
.env
*.local
# 大体积中间产物(如果不想入库)
/cache/
/export-temp/
注意:
.gitignore
只影响未跟踪的文件,如果某个文件已经被 Git 跟踪了,再写进
.gitignore
不会生效。需要先移除缓存:
git rm -r --cached .
git add .
4.3 首次提交
git add .
git commit -m "init: 品牌设计初稿"
git add .
是把当前目录所有变更加入暂存区,
git commit -m "说明"
是生成一个版本节点。设计团队的 commit message 建议规范化,下面是一个示例格式:
类型: 说明
类型包括:
- init 初始化
- design 设计稿修改
- asset 资源文件更新
- fix 修复问题
- docs 文档调整
示例:
git commit -m "design: 更新首页视觉稿,按钮颜色改为品牌蓝"
后续查看提交历史:
git log --oneline --graph --decorate
--oneline
只显示一行摘要,
--graph
显示分支图,
--decorate
显示分支和标签指向。这是日常观察版本演进最常用的命令。
4.4 文件状态查看
git status
这条命令的输出里会分为三类:
- 已跟踪但被修改:显示为 "Changes not staged for commit"
- 已暂存待提交:显示为 "Changes to be committed"
- 未跟踪文件:显示为 "Untracked files"
每次开始工作前先
git status
,提交前再看一次
git status
,能有效避免误提交和漏提交。
4.5 版本回滚
这是设计师最关心的能力。假设改了三版之后,甲方还是说"用第一版的感觉",但第一版已经改得面目全非了。此时只需要找到那个版本的提交哈希,然后恢复文件:
# 查看历史提交
git log --oneline
# 输出可能像这样:
# abc1234 design: 改版第三轮
# def5678 design: 改版第二轮
# 1112223 design: 第一版定稿
# 9876543 init: 品牌设计初稿
恢复单个文件到某个历史版本:
git checkout 1112223 -- path/to/design-file.sketch
git checkout <commit> -- <file>
会把指定文件恢复到该提交时的状态,然后重新提交一次:
git add path/to/design-file.sketch
git commit -m "fix: 恢复首页视觉稿到第一版定稿"
这种方式的优点是保留了完整的变更历史,不会丢失中间改动的记录。如果整个仓库都需要硬回退,可以用:
git reset --hard 1112223
但注意:
--hard
会丢弃当前工作区所有未提交的修改,非常危险。对于设计师项目,更推荐使用
git checkout
精确恢复文件,而不是整个仓库硬重置。
5. 分支协作与冲突处理
5.1 为什么设计师需要分支
一个设计团队里,可能一个人在优化首页视觉,另一个人在做品牌 VI 延伸,还有人在调整切图资源。如果所有人都在
main
上工作,提交会很混乱,且互相干扰。
分支的作用是:每个人或者每个需求在独立线路上工作,互不影响,完成后合并回主线。这和在 Figma 里每个人新建自己的页面类似,只不过 Git 的分支是显式、可追踪、可合并的。
5.2 创建与切换分支
# 创建并切换分支
git checkout -b feature/homepage-redesign
等价于两条命令:
git branch feature/homepage-redesign
git checkout feature/homepage-redesign
查看当前所有分支:
git branch -a
当前所在分支前面会显示一个
*
号。
5.3 合并分支
设计完成后,切回主分支,合并功能分支:
git checkout main
git merge feature/homepage-redesign
合并后可以删除不需要的分支:
git branch -d feature/homepage-redesign
-d
会先检查该分支是否已合并,如果未合并会阻止删除;如果要强删,用
-D
。
5.4 冲突处理
Git 合并时如果同一个文件的不同版本都发生了修改,就会产生冲突。比如设计师 A 和设计师 B 同时改了
main-page.sketch
,合并时就无法自动决定取哪个版本。
冲突提示类似:
Auto-merging main-page.sketch
CONFLICT (content): Merge conflict in main-page.sketch
Automatic merge failed; fix conflicts and then commit the result.
这时候需要看当前状态:
git status
Git 会标记冲突文件。如果是文本类文件,可以直接在编辑器里看到冲突标记:
<<<<<<< HEAD
当前分支的版本
=======
合并进来分支的版本
>>>>>>> feature/homepage-redesign
需要人工决定保留哪一边,或者两边都保留。对于二进制格式的设计文件(PSD、Sketch 的某些格式),无法直接编辑冲突标记,常见的做法是:
- 保留其中一个人的版本,另一个人的修改重新做一遍。
- 用设计软件打开两个文件,手动整合。
- 在合并前先约定设计文件的模块划分,让两个人尽量不碰同一个文件。
冲突解决后:
git add .
git commit -m "merge: 合并首页改版分支,解决 main-page 视觉稿冲突"
需要提醒:冲突不可怕,可怕的是强制覆盖别人的工作。遇到冲突优先沟通,而不是用
git push --force
硬推。
5.5 Tag 打版本号
设计定稿后,可以用 tag 标记一个可交付版本:
git tag design-v1.0.0
git tag -a design-v1.0.0 -m "品牌设计第一版正式交付"
查看所有 tag:
git tag -l
tag 的作用是给某个提交打个好记的名字,后续随时可以通过 tag 名找回当时的状态:
git checkout design-v1.0.0
6. 批量任务与自动化脚本
纯手动执行
git add
、
git commit
对单文件没问题,但设计项目经常遇到批量场景:一次性提交几十个切图文件、把多套命名规范的素材批量改名后入库、需要按日期归档每周导出的资源包。这些场景都适合用脚本批量处理。
6.1 批量提交指定目录的变更
# 添加 assets 目录下所有变更
git add assets/
git commit -m "asset: 更新切图资源,适配移动端尺寸"
如果只想提交所有被删除的文件:
git add -u
6.2 批量修改 commit message
如果某一条提交说明写错了,或者提交不规范,可以用:
# 修改最近一条提交信息
git commit --amend
# 修改历史提交信息(需要谨慎,会改写历史)
git rebase -i HEAD~3
rebase -i
交互式命令中,把需要修改的提交前的
pick
改成
reword
,保存后依次输入新的提交信息。这里提醒一下:已经推送到远端的提交不要随意 amend 或 rebase,会导致远端历史不一致。
6.3 批量脚本归档设计资产
假设每周需要把
exports
目录里的最新素材打成带日期的 tag,可以写一个简单的 shell 脚本:
#!/bin/bash
# archive-design.sh
# 用途:将当前 exports 目录的变更提交并打上日期 tag
cd "$(dirname "$0")/.."
git add exports/
git commit -m "asset: 归档 $(date +%Y-%m-%d) 导出素材"
TAG_NAME="design-$(date +%Y%m%d-%H%M%S)"
git tag -a "$TAG_NAME" -m "素材归档:$(date +%Y-%m-%d)"
echo "已完成归档,tag 名为 $TAG_NAME"
保存后加上执行权限:
chmod +x archive-design.sh
./archive-design.sh
6.4 批量重命名后提交
设计素材经常出现命名不统一的问题,比如部分文件是中文名、部分是小写下划线、部分是驼峰。用 Git 配合命令行批量重命名:
# 将当前目录下所有 .png 文件统一为小写加下划线格式
for f in *.png; do
lower=$(echo "$f" | tr '[:upper:]' '[:lower:]' | tr ' ' '_')
if [ "$f" != "$lower" ]; then
git mv "$f" "$lower"
fi
done
git commit -m "abc: 统一切图命名规范为小写下划线"
git mv
的好处是,Git 会把这次重命名记录为一次 rename 操作,保留文件的修改历史,而不是新增一个文件、删除一个文件。
6.5 Hook 自动校验提交信息
团队里如果要求 commit message 必须符合规范,可以用 Git 的
commit-msg
钩子做自动校验。在
.git/hooks/commit-msg
中写入脚本:
#!/bin/sh
# 最简单的校验:commit message 不能为空
if [ -z "$(cat "$1")" ]; then
echo "提交信息不能为空!"
exit 1
fi
# 校验格式:必须以类型开头,例如 feat: fix: docs:
if ! grep -qE '^(init|design|asset|fix|docs|merge):' "$1"; then
echo "提交信息格式错误,示例:design: 更新首页视觉稿"
exit 1
fi
注意
.git/hooks
目录下的钩子默认不会随仓库同步给其他人,每个开发者需要各自配置。如果团队要强制统一,可以准备一份钩子脚本放到仓库里的
scripts/hooks/
目录,然后让每个人执行一次:
git config core.hooksPath scripts/hooks
7. 资源和性能观察
7.1 仓库体积控制
Git 对文本文件的版本管理非常高效,但对设计类二进制文件并不友好。一个 PSD 可能几百 MB,每次修改后 Git 都会存一个新版本,仓库体积会线性膨胀。这是 Git 管理设计文件时最需要关注的问题。
观察仓库体积:
git count-objects -vH
输出中的
size-pack
字段就是压缩后的仓库总大小。
7.2 Git LFS 管理大文件
如果设计源文件本身很大,必须引入 Git Large File Storage(LFS)。LFS 把大文件内容单独存储,只在 Git 仓库里记录一个文本指针,能显著降低仓库体积和 clone 耗时。
安装并启用 LFS:
git lfs install
跟踪指定类型的文件:
git lfs track "*.psd"
git lfs track "*.sketch"
git lfs track "*.ai"
执行之后会生成
.gitattributes
文件,需要一起提交:
git add .gitattributes
git commit -m "config: 启用 Git LFS 管理设计源文件"
之后像正常文件一样
git add
、
git commit
即可。要注意:LFS 必须团队内所有人安装并启用,否则其他人 clone 下来看到的是指针文件而不是实际内容。
7.3 避免进程残留和端口冲突
如果项目需要启动配套的 Web 管理界面或 API 服务,启动后要留意端口占用。常见的做法是:
# 查找占用端口的进程
lsof -i :3000
# 杀掉指定进程
kill -9 <PID>
如果团队使用 Git 托管平台,如 Gitea、GitLab 自建服务,默认端口可能被占用,需要检查配置文件里的端口设置。
7.4 clone 速度优化
仓库体积过大时,clone 会非常慢。可以在 clone 时只拉取最新版本:
git clone --depth 1 git@github.com:your-team/design-assets.git
--depth 1
表示浅克隆,只保留最近一次提交。缺点是后续无法查看更早的历史记录,需要
git fetch --unshallow
补全。
8. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 执行 git 提示"不是内部或外部命令" | Git 未安装或 PATH 未配置 |
检查安装目录下是否存在
cmd/git.exe
| 重装 Git,并在安装时选择添加 PATH |
| 执行 git 提示"无法将 git 项识别为 cmdlet" | PowerShell 环境未识别 Git | 检查当前终端是否是新开的窗口 | 关闭并重新打开终端;确认 PATH 配置 |
| clone 时提示 unable to access/SSL certificate problem | HTTPS 证书校验失败,或代理设置异常 |
检查
git config --list
中的 proxy 配置
|
清除代理:
git config --global --unset http.proxy
;或关闭系统代理
|
| 提示 certificate file 错误 | Git 找不到 CA 证书文件 |
检查
git config --system http.sslCAInfo
| 设置正确的证书路径,或使用 SSH 地址替代 HTTPS |
| 提示 fatal: not a git repository | 当前目录没有初始化仓库,或不在仓库子目录 |
执行
git rev-parse --show-toplevel
|
先
git init
或
cd
到仓库目录
|
| 提示 Please tell me who you are | 没有配置 user.name 和 user.email |
执行
git config --global --list
| 配置用户名和邮箱 |
| 提交时想撤回,但不知道用什么命令 | 对 git reset 和 git checkout 的区别不熟悉 |
查看修改状态:
git status
|
已暂存想撤回暂存:
git restore --staged <file>
;未暂存想丢弃修改:
git restore <file>
|
| 文件明明删了,但仓库里还有 | 删除的文件没有提交 |
检查
git status
中是否显示 deleted
|
git add -u
或
git rm <file>
后提交
|
| 合并时报冲突,不知道保留哪个版本 | 两个分支同时修改了同一个文件 |
git status
查看冲突文件列表
|
打开冲突文件,手动保留正确版本,然后
git add
和
git commit
|
| 设计文件成为大仓库,clone 很慢 | 二进制文件占用了仓库历史空间 |
git count-objects -vH
查看仓库大小
| 迁移到 Git LFS 管理大文件 |
| commit message 写错了 | 提交后想修改说明 |
查看最近提交:
git log -1
|
未推送用
git commit --amend
,已推送用
git commit --amend
后
git push --force-with-lease
(需谨慎)
|
| push 时提示 login failed / check api token | 认证失败或 token 过期 |
查看远端地址:
git remote -v
| 更换 SSH 地址,或重新配置访问令牌 |
| 误提交了不该提交的文件 |
.gitignore
写晚了,文件已被跟踪
|
检查文件是否在跟踪列表:
git ls-files
|
用
git rm -r --cached <file>
解除跟踪,再添加 .gitignore
|
| Git 图形界面看不到最新提交 | 本地和远端不同步 |
执行
git fetch --all --prune
| 拉取远端历史后刷新视图 |
9. 最佳实践与使用建议
9.1 第一次先小范围试验
不要把整个设计团队一上来就全部迁到 Git 工作流。挑选一个不需要频繁变动的项目、一个愿意尝鲜的小团队,跑两个星期的版本管理和协作流程,把坑踩完再推广。
9.2 建立一份团队提交规范
建议团队维护一份
CONTRIBUTING.md
文档,写清楚:
- commit message 的格式。
-
分支命名规则,例如
feature/xxx、fix/xxx、design/xxx。 - 大文件的处理方式,哪些类型走 Git LFS。
- 冲突的解决原则。
这份文档本身也提交到仓库里,新成员加入时先读这份文件。
9.3 目录结构规划
设计仓库的目录不要全部堆在根目录,建议按类型划分:
design-assets/
├── brand/ # 品牌 VI、Logo 源文件
├── ui/ # UI 界面设计源文件
├── exports/ # 切图导出资源
├── docs/ # 设计规范、说明文档
├── .gitignore
└── README.md
每次提交前检查一下是否把文件放到了正确位置,避免仓库越来越乱。
9.4 接口和托管平台的选择
如果团队规模小、不差钱,直接用 GitHub/GitLab 的私有仓库最省事。如果企业内部要求数据不出内网,可以用 Gitea 或 GitLab Community Edition 自建服务。
自建 Git 服务的端口和启动方式需要按发行版调整。如果只是做本地文件版本管理,不推远端也可以工作,
git init
初始化后的仓库本身就是一个完整的版本库。
9.5 涉及版权、人脸、声音素材的合规提醒
设计工作流中经常会用到人物肖像、品牌 Logo、商业字体等素材。如果这些素材进入 Git 仓库,再推到远端,就等于把素材的访问权分发给了所有有仓库权限的人。建议:
- 有版权风险或未公开的素材不要进入 Git 仓库。
- 确需共享的素材,确认授权范围可以覆盖团队成员和指定合作方。
- 使用真实人物照片、声音素材时,必须获得肖像权和授权许可。
- 对外发布或商用前,对仓库内容做一次全面复核,避免敏感信息随历史记录泄露。
9.6 发布与回溯配合 Tag 使用
设计交付不是"文件发给对方就完了",建议每次交付都打上 tag,并在 tag 消息里写清楚交付内容、版本号和日期。这样后续有争议时,可以直接通过 tag 找回当时的完整状态,不需要翻聊天记录。
10. 总结与下一步
Git for Designers 这个方向最值得尝试的点,是它把版本管理的核心价值带进了设计协作场景:每条修改都有记录,每个版本都可以回溯,每次协作都有边界。对个人设计师来说,它解决的是"改到最后一版却想找回最初创意"的痛点;对设计团队来说,它解决的是"多人维护同一批文件互相覆盖"的协作难题。
最先要验证的东西有三样:第一,Git 是否能在设计文件的工作目录里稳定运行;第二,团队成员能否接受"先提交、后继续改"的工作习惯;第三,大文件管理方案是否满足日常素材的体量需求。
最容易踩的坑是仓库体积失控和二进制冲突。前者要用 Git LFS 提前预防,后者要尽量通过分工和模块划分避免两个人同时改同一个文件。
后续可以继续扩展的方向包括:接入 CI/CD 做设计资源的自动化导出和归档、设计规范文档化、以及通过 Git Hook 统一团队的提交规范。第一次部署建议先建一个测试项目跑通流程,再逐步把真实项目迁移进来。整套方案值得收藏备用,等团队下一次出现"最终版_v9"的时候再拿出来。



被折叠的 条评论
为什么被折叠?



