# Nlelouche Unity3d Antigravityskills Version Control Git

> ---

- Skill: `tomevault-io/nlelouche-unity3d-antigravityskills-version-control-git` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/nlelouche-unity3d-antigravityskills-version-control-git`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/nlelouche-unity3d-antigravityskills-version-control-git/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/nlelouche-unity3d-antigravityskills-version-control-git

---

---
name: version-control-git
description: "Best practices for Unity Git workflows, LFS configuration, and branching strategies."
version: 2.0.0
tags: ["git", "version-control", "lfs", "workflow", "collaborative"]
argument-hint: "action='gitignore' OR config='LFS' strategy='gitflow'"
disable-model-invocation: false
user-invocable: true
allowed-tools:
  - run_command
  - list_dir
  - write_to_file
requirements:
  unity_version: ">=6.0"
  render_pipeline: "Any"
  dependencies: []
context_discovery:
  check_unity_version: true
  check_render_pipeline: false
  scan_manifest_for: []
performance_budget:
  gc_alloc_per_frame: "0 bytes target in hot paths"
  max_update_cost: "O(n) - profiler-guided"
tdd_first: true  # ⚠️ Updated by audit v2.0.1 - needs manual test implementation
---

# Version Control Git

## Overview
Setup and maintenance of robust Git workflows for Unity projects. Includes optimized `.gitignore` configuration, Git LFS (Large File Storage) for binary assets, and collaboration strategies.

## When to Use
- Use at project setup
- Use when binary assets (Texture, Audio) exceed 100MB
- Use when collaborating with teams
- Use when setting up CI/CD
- Use for branching and merging strategies

## Key Configurations

| File | Purpose |
|------|---------|
| **.gitignore** | Excludes temp/generated files (Library, Temp, Logs) |
| **.gitattributes** | Defines LFS tracking (DLL, PNG, WAV, FBX) |
| **.gitmodules** | Manages submodules (Plugins, AntiGravity) |

## Unity Git Best Practices
- ✅ **YAML Serialization**: Unity Editor -> Edit -> Project Settings -> Editor -> Asset Serialization -> Force Text.
- ✅ **Visible Meta Files**: Unity Editor -> Edit -> Project Settings -> Version Control -> Mode -> Visible Meta Files.
- ✅ **LFS**: Always track binary files with LFS to keep repo size distinct from history size.

## Architecture

```
┌─────────────────────────────────────────────────────────────┐
│                    GIT LFS WORKFLOW                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  LOCAL REPO               REMOTE REPO (GitHub/GitLab)       │
│  ┌──────────────┐        ┌──────────────┐                   │
│  │ Source (.cs) │───────▶│ Source (.cs) │ (History)         │
│  │ Meta Files   │        │ Meta Files   │                   │
│  │              │        └──────────────┘                   │
│  │ LFS Pointer  │───────────────┐                           │
│  └──────┬───────┘               │                           │
│         │                       ▼                           │
│         │                ┌──────────────┐                   │
│         └───────────────▶│ LFS STORAGE  │ (Binaries)        │
│    (Actual Binary)       │ .psd .fbx    │                   │
│                          └──────────────┘                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

## Few-Shot Examples

### Example 1: Unity .gitignore
**User**: "Generate gitignore for Unity."

**Agent**:
```gitignore
# Unity generated
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/

# Visual Studio / Rider
.vs/
.idea/
*.csproj
*.sln
*.user
*.suo

# OS generated
.DS_Store
Thumbs.db
```

### Example 2: .gitattributes (LFS)
**User**: "Setup LFS for textures and models."

**Agent**:
```gitattributes
# Image formats
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text

# Audio formats
*.wav filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text

# 3D formats
*.fbx filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text

# Unity binaries
*.unitypackage filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
```

### Example 3: Branching Strategy
**User**: "Explain GitFlow for our team."

**Agent**:
```
1. main: Production-ready code.
2. develop: Integration branch for features.
3. feature/feature-name: Individual developer work.
4. release/v1.0: Preparation for release (bug fixes only).
5. hotfix/critical-bug: Urgent fixes for main.

Rules:
- Never push to main/develop directly.
- Use Pull Requests (PRs) for code review.
- Squash commits when merging feature branches to keep history clean.
```



---

## TDD Contract

> ⚠️ **Legacy Skill — Refactor Pending**
> Este skill NO tiene tests automatizados aún. El siguiente boilerplate es un punto de partida.

```csharp
// Escribe estos tests ANTES de implementar:

// Test 1: should [expected behavior] when [condition]
[Test]
public void VersionControlGit_Should{ExpectedBehavior}_When{Condition}()
{{
    // Arrange
    // TODO: Setup test fixtures
    
    // Act
    // TODO: Execute system under test
    
    // Assert
    Assert.Fail("Not implemented — write test first");
}}

// Test 2: should handle [edge case]
[Test]
public void VersionControlGit_ShouldHandle{EdgeCase}()
{{
    // Arrange
    // TODO: Setup edge case scenario
    
    // Act
    // TODO: Execute
    
    // Assert
    Assert.Fail("Not implemented");
}}

// Test 3: should throw when [invalid input]
[Test]
public void VersionControlGit_ShouldThrow_When{InvalidInput}()
{{
    // Arrange
    var invalidInput = default;
    
    // Act & Assert
    Assert.Throws<Exception>(() => {{ /* execute */ }});
}}
```

### Pasos para completar el TDD:

1. **Descomenta** los tests above
2. **Implementa** la funcionalidad mínima para que compile
3. **Ejecuta** los tests — deben fallar (RED)
4. **Implementa** la funcionalidad real
5. **Verifica** que los tests pasen (GREEN)
6. **Refactorea** manteniendo los tests verdes

---

**Nota**: Este skill fue marcado como `tdd_first: false` durante la auditoría v2.0.1. La sección TDD fue agregada automáticamente pero requiere customización manual para reflejar el comportamiento real del skill.


## Related Skills
- `@tools-pipeline` - CI/CD setup
- `@unity-mcp-connector` - Editor integration

## Best Practices
- Follow the patterns and constraints documented in this skill.
- Always run @context-discovery-agent before applying this skill to verify environment compatibility.
- Apply TDD where applicable: write the interface contract first, then implement.
- Zero GC in hot paths: cache references, avoid LINQ and 
ew allocations in Update loops.

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/nlelouche) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

