6.8 KiB
6.8 KiB
美术Git操作指南
💡 提示:命令行操作最准确可靠。SourceTree因版本不同界面可能有差异,如遇找不到功能的情况请使用命令行。
📋 目录
首次拉取项目
命令行方式 ✅
# 1. 克隆项目(自动包含SubModule)
git clone --recursive git@gitea.bywaystudios.com:zhanghongbo/MeowmentArt.git
# 2. 进入项目
cd MeowmentArt
# 3. 配置自动同步SubModule
git config submodule.recurse true
# 4. 配置用户信息
git config user.name "LiBoyang"
git config user.email "zhangsan@company.com"
# 完成!可以用Unity打开项目了
SourceTree方式
1. File → Clone / New
2. 填写信息:
Source URL: git@gitea.bywaystudios.com:你的用户名/MeowmentArt.git
Destination Path: E:\WorkSpace\MeowmentArt
✓ Recurse submodules ← 勾选这个!
3. 点击 Clone
4. 克隆完成后,Tools → Options → Git
找到 Submodules 部分
✓ 勾选 Update submodules when pulling
日常提交流程
命令行方式 ✅
# === 第一步:在SubModule内提交(必须先做) ===
cd Assets/Art_SubModule
# 查看修改了哪些文件
git status
# 添加文件(可以选择性添加)
git add Characters/hero.png # 添加单个文件
git add Characters/ # 添加整个文件夹
git add . # 添加所有修改
# 提交前先拉取更新(避免冲突)
git pull
# 提交
git commit -m "添加英雄角色贴图"
# 推送到远程
git push
# === 第二步:回到主项目提交(记录SubModule更新) ===
cd ../..
# 查看状态(会看到SubModule有变化)
git status
# 添加SubModule的变化
git add Assets/Art_SubModule
# 提交主项目
git commit -m "更新美术资源"
# 推送
git push
SourceTree方式
=== 第一步:提交SubModule ===
1. 在左侧 SUBMODULES 区域双击 "Assets/Art_SubModule"
(会打开新窗口显示SubModule)
2. 在SubModule窗口:
- 点击 File Status
- 勾选要提交的文件
- 点击 Stage Selected(暂存所选)
- 底部输入提交信息:"添加英雄角色贴图"
- 点击 Commit
- 点击 Push
=== 第二步:提交主项目 ===
3. 回到主项目窗口:
- File Status 会显示 "Assets/Art_SubModule" 有变化
- 勾选这个变化
- 点击 Stage Selected
- 输入提交信息:"更新美术资源"
- 点击 Commit
- 点击 Push
⚠️ 重要提示:
- 必须先push SubModule,再push主项目
- 两个都要提交,缺一不可
避免冲突
规则1:提交前先拉取 ⭐ 最重要
# 养成习惯:每次提交前先执行
cd Assets/Art_SubModule
git pull # 先拉取别人的更新
# 如果有冲突,现在解决比稍后解决简单
# 然后再提交你的修改
git add .
git commit -m "..."
git push
规则2:明确分工
建议分工方式:
美术A → Characters/ 文件夹
美术B → UI/ 文件夹
美术C → Effects/ 文件夹
各自只修改自己负责的文件夹,不会冲突!
规则3:提交前沟通
在团队群里:
"我正在修改 characters/hero.png,大家别动这个文件"
"收到!"
→ 避免多人同时修改同一文件
规则4:经常提交
✅ 好习惯:完成一个小功能就提交
❌ 坏习惯:攒几天的修改一次性提交
经常提交 = 减少冲突范围 = 更容易解决
解决冲突
场景1:push时提示冲突
命令行方式 ✅
cd Assets/Art_SubModule
# 推送失败
git push
# ❌ error: failed to push some refs
# 原因:远程有新提交
# 解决方法:
# 1. 先拉取远程更新
git pull
# 2. 如果自动合并成功
# Merge made by... ← 看到这个说明成功
git push # 再次推送即可
# 3. 如果提示冲突
# CONFLICT (content): Merge conflict in xxx.png
# Auto-merging xxx failed
# 4. 查看哪些文件冲突
git status
# both modified: Characters/hero.png ← 冲突的文件
# 5A. 如果是二进制文件(图片、模型等)
# 选择保留谁的版本:
# 保留自己的版本
git checkout --ours Characters/hero.png
git add Characters/hero.png
# 或者保留别人的版本
git checkout --theirs Characters/hero.png
git add Characters/hero.png
# 5B. 如果是文本文件(配置文件等)
# 打开文件手动编辑,删除冲突标记:
# <<<<<<< HEAD
# 你的内容
# =======
# 别人的内容
# >>>>>>> xxx
# 保留需要的内容,删除标记
# 6. 标记冲突已解决
git add .
# 7. 完成合并
git commit -m "解决冲突"
# 8. 推送
git push
SourceTree方式
1. Push失败后会提示需要Pull
2. 点击 Pull 按钮
3. 如果有冲突,会显示:
⚠️ Conflicted files:
- Characters/hero.png
4. 右键冲突文件:
对于图片/模型等二进制文件:
- Resolve Conflicts → Use Mine (保留你的)
- Resolve Conflicts → Use Theirs (保留别人的)
对于文本文件:
- Resolve Conflicts → Launch External Merge Tool
- 或直接编辑文件
5. 解决后:
- 右键文件 → Mark Resolved
- 点击 Commit
- 输入 "解决冲突"
- Push
场景2:主项目SubModule引用冲突
命令行方式 ✅
cd MeowmentArt # 主项目根目录
git pull
# CONFLICT (submodule): Merge conflict in Assets/Art_SubModule
# 解决方法:
# 1. 进入SubModule拉取最新
cd Assets/Art_SubModule
git pull
cd ../..
# 2. 标记已解决
git add Assets/Art_SubModule
# 3. 完成合并
git commit -m "同步SubModule更新"
# 4. 推送
git push
自动同步SubModule
问题:pull时SubModule没更新
原因:默认情况下 git pull 不会自动更新SubModule
解决方法:
命令行方式 ✅
cd MeowmentArt # 主项目根目录
# 一次性配置,永久生效
git config submodule.recurse true
# 配置后,git pull 会自动同步SubModule
git pull # 会自动更新SubModule了!
# 验证配置
git config --get submodule.recurse
# 输出: true = 配置成功
SourceTree方式
方式1:全局设置
1. Tools → Options → Git
2. 找到 Submodules 部分
3. ✓ 勾选 Update submodules when pulling
方式2:Pull时手动勾选
1. 每次点击 Pull 时
2. 在弹出对话框中
3. ✓ 勾选 Update submodules
4. 点击 OK
手动更新SubModule到最新版本
有时需要把SubModule更新到远程最新版本:
# 更新SubModule到远程最新
git submodule update --remote
# 或在SourceTree中:
# Repository → Update Submodules...
遇到问题随时联系客户端程序!