🐙 Git 极客生存指南:从命令行到私有云搭建
面向对象: 程序员 (Programmers)。 目标: 掌握 Git 的“黑魔法”,处理复杂的分支管理、冲突解决,并学会搭建团队的私有代码仓库。
1. 常用命令速查 (The Cheat Sheet)
1.1 基础操作
1.2 分支操作 (Branching)
1.3 后悔药 (Undo)
1.4 暂存现场 (Stash)
当你正在修 Bug,突然老板让你切分支去改另一个紧急 Bug:2. 进阶技巧 (Advanced Skills)
2.1 Rebase (变基) vs Merge
- Merge: 保留真实的历史记录,会有 “Merge branch ‘xxx’” 的提交。适合公共分支合并。
- Rebase: 把你的提交“接”在目标分支的最新提交后面。历史记录是一条直线,非常干净。
git pull --rebase: 拉取代码时自动变基 (推荐配置)。git rebase develop: 在 feature 分支上,把 develop 的最新代码垫在下面。
2.2 Cherry-pick (摘樱桃)
只想要某个分支里的某一次提交,而不是整个分支?2.3 解决冲突 (Conflict Resolution)
A. 文本文件冲突
-
定位: 打开冲突文件,找到
<<<<<<<,=======,>>>>>>>标记。 - 修改: 决定保留哪部分代码(或者都保留),删除标记符号。
-
提交:
git add+git commit。
B. 二进制文件冲突 (Binary Conflict) - 关键!
图片、模型、DLL 无法合并内容,必须二选一。 命令行方案:-
保留我的 (Mine): 我改了图,我要覆盖服务器的。
-
保留他的 (Theirs): 别人的图是对的,我放弃我的修改。
-
注意:在
git merge时,--ours是指当前分支,--theirs是指要合并进来的分支。但在git rebase时,逻辑是反的!务必先备份。
- 在冲突文件上右键。
-
选择
Resolve using 'Mine'(使用我的版本) 或Resolve using 'Theirs'(使用远程版本)。 - 工具会自动执行上述命令并标记为已解决。
- 使用 LFS 的锁定功能:
git lfs lock image.png。 - 这样当你在修改时,别人无法推送这个文件,直到你
unlock。
3. 搭建私有 Git 服务器 (Self-Hosted Git)
对于不想把代码放在 GitHub/Gitee 的团队,推荐搭建 Gitea (轻量级) 或 GitLab (功能全)。3.1 方案 A: Gitea (推荐,极轻量)
适合小团队,一个二进制文件搞定,内存占用极低。 搭建步骤 (Windows/Linux):- 下载: 去 Gitea 官网 下载对应系统的可执行文件。
- 运行: 直接双击运行 (会启动 Web 服务器,默认端口 3000)。
-
配置: 浏览器访问
localhost:3000,首次运行会进入安装向导。- 数据库选
SQLite3(最简单,无需安装 MySQL)。 - 设置管理员账号。
- 数据库选
-
局域网访问: 确保防火墙开放 3000 端口。队友可以通过
http://192.168.x.x:3000访问。
3.2 方案 B: 局域网裸仓库 (Bare Repo)
最原始的方法,不需要任何 Web 界面。-
服务器端 (找台电脑做主机):
-
共享: 将
vampirefall.git文件夹设置为网络共享文件夹 (Windows SMB)。 -
客户端:
4. Unity 项目的 .gitignore (必抄)
5. LFS 配置 (大文件存储)
对于大于 100MB 的文件 (PSD, FBX),必须用 LFS。-
安装:
git lfs install -
配置:
-
提交: 这会生成一个
.gitattributes文件,务必把它提交上去。
一句话忠告: 永远不要在主分支 (master/develop) 上直接写代码。 Commit 早,Commit 勤。