Git Integration in Microsoft Fabric
Microsoft Fabric
Microsoft Fabric8 min read

Git Integration in Microsoft Fabric

Version control your Microsoft Fabric artifacts with Git integration. Manage notebooks, pipelines, and semantic models with Azure DevOps and GitHub.

By Errin O'Connor, Chief AI Architect

Git integration in Microsoft Fabric brings professional software development practices to the analytics lifecycle, enabling version control, branching, code review, and automated deployment for lakehouses, warehouses, notebooks, semantic models, and reports. Before Git integration, Fabric workspace changes were immediate and irreversible — one developer's accidental deletion could destroy hours of work with no recovery path. Our enterprise deployment team implements Git-based development workflows for organizations adopting Microsoft Fabric across their analytics estate.

This guide covers setup, branching strategies, workspace synchronization, CI/CD integration, and production governance patterns for Fabric Git integration in 2026.

What Fabric Git Integration Provides

Fabric Git integration connects a workspace to an Azure DevOps or GitHub repository, synchronizing workspace items as text-based definitions stored in Git.

Supported item types:

Fabric ItemGit SupportFormat in GitNotes
Semantic modelsFullTMDL (folder structure)Measures, tables, relationships as individual files
ReportsFullPBIR (JSON)Pages, visuals, bookmarks as text
NotebooksFull.py / .ipynbCode cells and markdown
LakehousesMetadata onlyJSON definitionData stays in OneLake, schema tracked in Git
WarehousesMetadata onlyJSON definitionTable definitions, stored procedures
Data pipelinesFullJSON definitionPipeline activities and configurations
Dataflows Gen2PartialM queriesMashup queries tracked
Spark job definitionsFullCode filesSpark configurations and scripts

What is NOT tracked in Git: - Actual data in lakehouses and warehouses (only metadata/schema) - Capacity and workspace settings - Permissions and access control - Data source credentials - Refresh schedules

Setting Up Git Integration

Prerequisites

  1. Repository: Azure DevOps Git or GitHub repository (one branch per workspace)
  2. Permissions: Workspace Admin or Member role in Fabric, plus write access to the Git repository
  3. Fabric license: Git integration requires Fabric capacity (F-SKU) or Power BI Premium (P-SKU)
  4. Tenant setting: "Users can synchronize workspace items with their Git repositories" must be enabled by the Fabric admin

Initial Connection

Step-by-step setup:

  1. Navigate to Workspace Settings > Git integration
  2. Select your Git provider (Azure DevOps or GitHub)
  3. Authenticate and select the repository and branch
  4. Choose the folder in the repository for this workspace's items
  5. Click "Connect and sync"

First sync behavior: Fabric compares workspace items with repository contents. If the repo is empty, workspace items are committed to Git. If the repo has content, Fabric shows a merge dialog to resolve conflicts.

Branching Strategy for Fabric Workspaces

The recommended approach maps branches to workspaces in a promotion model:

``` main branch <-> Production Workspace (locked, deploy-only) | develop branch <-> Development Workspace (active development) | feature/* branches <-> Feature Workspaces (isolated experiments) ```

Workspace-branch mapping:

WorkspaceBranchPurposeAccess Model
Analytics-ProdmainProduction, consumer-facingRead-only for most users
Analytics-DevdevelopActive developmentDevelopment team
Analytics-Feature-Xfeature/ticket-123Isolated feature workIndividual developer

Key principle: Never develop directly in the production workspace. All changes flow through Git branches and pull requests before reaching production.

Development Workflow

Daily Development Flow

  1. Developer opens Development workspace connected to the `develop` branch
  2. Makes changes to semantic models, notebooks, reports, or pipelines
  3. Reviews changes in the Source Control panel (shows modified items)
  4. Commits changes with a descriptive message
  5. Creates pull request in Azure DevOps/GitHub for code review
  6. Reviewer approves after verifying changes
  7. Merge to develop triggers sync to Development workspace
  8. Promote to production through a separate merge to `main`

Working with Semantic Models

Semantic model changes appear in TMDL format — individual files for each table, measure, relationship, and role. This enables meaningful diffs and focused code reviews.

Example TMDL file structure in Git:

``` /semantic-model/ model.tmdl /tables/ Sales.tmdl Products.tmdl Calendar.tmdl /measures/ Total Revenue.tmdl YoY Growth.tmdl /relationships/ Sales-Products.tmdl Sales-Calendar.tmdl /roles/ RegionManager.tmdl /expressions/ ServerParameter.tmdl ```

**Benefits for review:** A reviewer can see exactly which measures changed, which table definitions were modified, or which RLS roles were added — without opening Power BI Desktop.

Working with Notebooks

Notebooks sync as standard .py or .ipynb files, enabling: - Diff viewing for code changes - Linting and static analysis in CI pipelines - Code reuse through shared library imports - Package dependency management through requirements.txt

Conflict Resolution

Conflicts occur when two developers modify the same item on different branches.

Conflict resolution strategies:

ScenarioResolution
Different items modifiedAuto-merge (no conflict)
Same item, different propertiesManual merge in Git (text-based TMDL)
Same measure modified by two peoplePull request review catches before merge
Workspace out of sync with branchUse "Update from Git" to pull latest changes

Best practice: Keep feature branches short-lived (1-3 days) to minimize conflict probability.

CI/CD Pipeline Integration

Git integration is the foundation for CI/CD pipelines in Fabric.

Build Validation Pipeline

Trigger on pull requests to validate changes before merge:

```yaml trigger: none pr: branches: include: - develop - main

steps: - task: PowerShell@2 displayName: 'Validate TMDL Schema' inputs: script: | # Validate semantic model definitions dotnet tool install -g TabularEditor.TEditor tEditor semantic-model/ -V

- task: PowerShell@2 displayName: 'Run Best Practice Analyzer' inputs: script: | tEditor semantic-model/ -A bpa-rules.json -W

- task: PowerShell@2 displayName: 'Lint Notebook Code' inputs: script: | pip install flake8 flake8 notebooks/ --max-line-length 120 ```

Deployment Pipeline

After merge to `main`, deploy to production workspace:

Option 1: Git sync — Production workspace connected to `main` branch auto-syncs on merge.

Option 2: Fabric Deployment Pipelines — Use the Fabric deployment pipeline API to promote between workspaces with environment-specific parameter rebinding.

Option 3: Hybrid — Git sync for semantic models and notebooks, Fabric deployment pipelines for reports and dashboards that need visual validation.

Governance and Best Practices

Commit Message Standards

Enforce structured commit messages for traceability:

``` [Item Type] Brief description

Examples: [Model] Add YTD revenue measure with fiscal calendar support [Report] Update executive dashboard with new KPI visual [Notebook] Optimize ETL pipeline for daily refresh performance [Pipeline] Add error handling and retry logic to data ingestion ```

Branch Protection Rules

Configure in Azure DevOps or GitHub:

  • Require pull request for merges to develop and main
  • Require at least one reviewer approval
  • Require build validation to pass before merge
  • No direct pushes to main (all changes through PRs)
  • Require linked work item for traceability to business requirements

Access Control

RoleGit AccessWorkspace AccessResponsibilities
DeveloperWrite to feature branchesMember of Dev workspaceCreate features, submit PRs
Lead DeveloperWrite to developAdmin of Dev workspaceReview PRs, approve merges
Release ManagerWrite to mainAdmin of Prod workspaceApprove production deployments
Business UserRead only (optional)Viewer of Prod workspaceConsume reports

Secrets Management

Never commit secrets to Git. Data source credentials, API keys, and connection strings should be managed through:

  • Fabric workspace data source settings (configured per workspace)
  • Azure Key Vault references in notebooks and pipelines
  • Environment variables in Fabric Spark configurations
  • Service principal authentication rather than username/password

Migration from Non-Git Workflows

Organizations with existing Fabric workspaces need a migration path to Git-based development.

Migration steps:

  1. Inventory — Document all items in the production workspace
  2. Create repository — Initialize a Git repo with the planned folder structure
  3. Connect development workspace — Connect a copy of production to Git, perform initial commit
  4. Validate — Verify all items round-trip correctly (commit to Git, then recreate workspace from Git)
  5. Establish workflow — Train development team on branching, PR, and review processes
  6. Connect production — Once workflow is proven, connect production workspace to `main` branch
  7. Lock down — Remove direct development permissions on production workspace

Timeline: Allow 2-4 weeks for migration including team training and process documentation.

Limitations and Workarounds

LimitationImpactWorkaround
Not all item types fully supportedSome items require manual syncTrack unsupported items separately
Data not trackedSchema changes tracked but not data contentUse data quality frameworks for data validation
One branch per workspaceCannot switch branches in a workspaceCreate additional workspaces for additional branches
Large repos slow to syncInitial sync can take minutesKeep repos focused (one per domain, not one mega-repo)
Merge conflicts in JSONComplex JSON diffs are hard to readUse TMDL format (one file per object) for semantic models

Frequently Asked Questions

Can I use GitHub instead of Azure DevOps? Yes. Fabric supports both GitHub and Azure DevOps as Git providers. The functionality is equivalent. Choose based on your organization's existing tooling.

Does Git integration work with Power BI Pro? No. Git integration requires Fabric capacity (F-SKU) or Power BI Premium (P-SKU). Power BI Pro workspaces do not support Git connectivity.

What happens if I disconnect a workspace from Git? The workspace items remain as-is. The Git repository retains all committed content. You can reconnect later and resync.

Can multiple workspaces connect to the same branch? No. Each workspace connects to exactly one branch. This enforces the workspace-per-environment pattern.

How do I handle environment-specific configurations? Use Fabric deployment pipelines for parameter rebinding between environments, or maintain environment-specific configuration files in Git that deployment scripts read during CI/CD.

Next Steps

Git integration is the foundation of professional Fabric development. It enables code review, automated testing, rollback capability, and audit compliance that enterprises require. Our enterprise deployment team helps organizations implement Git-based Fabric workflows including repository design, branching strategy, CI/CD pipeline configuration, and team training. Contact us to modernize your Fabric development process.

**Related resources:** - Azure DevOps CI/CD for Power BI - Power BI Deployment Pipelines - Fabric Workspace Design - Microsoft Fabric Getting Started``` main branch <-> Production Workspace (locked, deploy-only) | develop branch <-> Development Workspace (active development) | feature/* branches <-> Feature Workspaces (isolated experiments) ```

Workspace-branch mapping:

WorkspaceBranchPurposeAccess Model
Analytics-ProdmainProduction, consumer-facingRead-only for most users
Analytics-DevdevelopActive developmentDevelopment team
Analytics-Feature-Xfeature/ticket-123Isolated feature workIndividual developer

Key principle: Never develop directly in the production workspace. All changes flow through Git branches and pull requests before reaching production.

Development Workflow

Daily Development Flow

  1. Developer opens Development workspace connected to the `develop` branch
  2. Makes changes to semantic models, notebooks, reports, or pipelines
  3. Reviews changes in the Source Control panel (shows modified items)
  4. Commits changes with a descriptive message
  5. Creates pull request in Azure DevOps/GitHub for code review
  6. Reviewer approves after verifying changes
  7. Merge to develop triggers sync to Development workspace
  8. Promote to production through a separate merge to `main`

Working with Semantic Models

Semantic model changes appear in TMDL format — individual files for each table, measure, relationship, and role. This enables meaningful diffs and focused code reviews.

Example TMDL file structure in Git:

``` /semantic-model/ model.tmdl /tables/ Sales.tmdl Products.tmdl Calendar.tmdl /measures/ Total Revenue.tmdl YoY Growth.tmdl /relationships/ Sales-Products.tmdl Sales-Calendar.tmdl /roles/ RegionManager.tmdl /expressions/ ServerParameter.tmdl ```

**Benefits for review:** A reviewer can see exactly which measures changed, which table definitions were modified, or which RLS roles were added — without opening Power BI Desktop.

Working with Notebooks

Notebooks sync as standard .py or .ipynb files, enabling: - Diff viewing for code changes - Linting and static analysis in CI pipelines - Code reuse through shared library imports - Package dependency management through requirements.txt

Conflict Resolution

Conflicts occur when two developers modify the same item on different branches.

Conflict resolution strategies:

ScenarioResolution
Different items modifiedAuto-merge (no conflict)
Same item, different propertiesManual merge in Git (text-based TMDL)
Same measure modified by two peoplePull request review catches before merge
Workspace out of sync with branchUse "Update from Git" to pull latest changes

Best practice: Keep feature branches short-lived (1-3 days) to minimize conflict probability.

CI/CD Pipeline Integration

Git integration is the foundation for CI/CD pipelines in Fabric.

Build Validation Pipeline

Trigger on pull requests to validate changes before merge:

```yaml trigger: none pr: branches: include: - develop - main

steps: - task: PowerShell@2 displayName: 'Validate TMDL Schema' inputs: script: | # Validate semantic model definitions dotnet tool install -g TabularEditor.TEditor tEditor semantic-model/ -V

- task: PowerShell@2 displayName: 'Run Best Practice Analyzer' inputs: script: | tEditor semantic-model/ -A bpa-rules.json -W

- task: PowerShell@2 displayName: 'Lint Notebook Code' inputs: script: | pip install flake8 flake8 notebooks/ --max-line-length 120 ```

Deployment Pipeline

After merge to `main`, deploy to production workspace:

Option 1: Git sync — Production workspace connected to `main` branch auto-syncs on merge.

Option 2: Fabric Deployment Pipelines — Use the Fabric deployment pipeline API to promote between workspaces with environment-specific parameter rebinding.

Option 3: Hybrid — Git sync for semantic models and notebooks, Fabric deployment pipelines for reports and dashboards that need visual validation.

Governance and Best Practices

Commit Message Standards

Enforce structured commit messages for traceability:

``` [Item Type] Brief description

Examples: [Model] Add YTD revenue measure with fiscal calendar support [Report] Update executive dashboard with new KPI visual [Notebook] Optimize ETL pipeline for daily refresh performance [Pipeline] Add error handling and retry logic to data ingestion ```

Branch Protection Rules

Configure in Azure DevOps or GitHub:

  • Require pull request for merges to develop and main
  • Require at least one reviewer approval
  • Require build validation to pass before merge
  • No direct pushes to main (all changes through PRs)
  • Require linked work item for traceability to business requirements

Access Control

RoleGit AccessWorkspace AccessResponsibilities
DeveloperWrite to feature branchesMember of Dev workspaceCreate features, submit PRs
Lead DeveloperWrite to developAdmin of Dev workspaceReview PRs, approve merges
Release ManagerWrite to mainAdmin of Prod workspaceApprove production deployments
Business UserRead only (optional)Viewer of Prod workspaceConsume reports

Secrets Management

Never commit secrets to Git. Data source credentials, API keys, and connection strings should be managed through:

  • Fabric workspace data source settings (configured per workspace)
  • Azure Key Vault references in notebooks and pipelines
  • Environment variables in Fabric Spark configurations
  • Service principal authentication rather than username/password

Migration from Non-Git Workflows

Organizations with existing Fabric workspaces need a migration path to Git-based development.

Migration steps:

  1. Inventory — Document all items in the production workspace
  2. Create repository — Initialize a Git repo with the planned folder structure
  3. Connect development workspace — Connect a copy of production to Git, perform initial commit
  4. Validate — Verify all items round-trip correctly (commit to Git, then recreate workspace from Git)
  5. Establish workflow — Train development team on branching, PR, and review processes
  6. Connect production — Once workflow is proven, connect production workspace to `main` branch
  7. Lock down — Remove direct development permissions on production workspace

Timeline: Allow 2-4 weeks for migration including team training and process documentation.

Limitations and Workarounds

LimitationImpactWorkaround
Not all item types fully supportedSome items require manual syncTrack unsupported items separately
Data not trackedSchema changes tracked but not data contentUse data quality frameworks for data validation
One branch per workspaceCannot switch branches in a workspaceCreate additional workspaces for additional branches
Large repos slow to syncInitial sync can take minutesKeep repos focused (one per domain, not one mega-repo)
Merge conflicts in JSONComplex JSON diffs are hard to readUse TMDL format (one file per object) for semantic models

Frequently Asked Questions

Can I use GitHub instead of Azure DevOps? Yes. Fabric supports both GitHub and Azure DevOps as Git providers. The functionality is equivalent. Choose based on your organization's existing tooling.

Does Git integration work with Power BI Pro? No. Git integration requires Fabric capacity (F-SKU) or Power BI Premium (P-SKU). Power BI Pro workspaces do not support Git connectivity.

What happens if I disconnect a workspace from Git? The workspace items remain as-is. The Git repository retains all committed content. You can reconnect later and resync.

Can multiple workspaces connect to the same branch? No. Each workspace connects to exactly one branch. This enforces the workspace-per-environment pattern.

How do I handle environment-specific configurations? Use Fabric deployment pipelines for parameter rebinding between environments, or maintain environment-specific configuration files in Git that deployment scripts read during CI/CD.

Next Steps

Git integration is the foundation of professional Fabric development. It enables code review, automated testing, rollback capability, and audit compliance that enterprises require. Our enterprise deployment team helps organizations implement Git-based Fabric workflows including repository design, branching strategy, CI/CD pipeline configuration, and team training. Contact us to modernize your Fabric development process.

**Related resources:** - Azure DevOps CI/CD for Power BI - Power BI Deployment Pipelines - Fabric Workspace Design - Microsoft Fabric Getting Started

Frequently Asked Questions

Which Git providers does Microsoft Fabric support?

Microsoft Fabric supports Azure DevOps (Azure Repos) and GitHub for Git integration. Both providers offer full functionality including branching, pull requests, and branch protection rules. Azure DevOps is more common in enterprise environments with existing Microsoft tooling, while GitHub is popular for teams using open-source workflows.

Does Git integration store my actual data in the repository?

No. Git integration stores artifact definitions and metadata (notebook code, pipeline configurations, semantic model schemas, report layouts) but not actual data. Your data remains in OneLake, warehouses, and other Fabric storage. This keeps repositories lightweight and avoids storing sensitive data in version control.

How do I handle environment-specific configurations between dev and production?

Use Fabric deployment pipelines alongside Git integration. Git manages code versioning and review, while deployment pipelines handle environment-specific configurations like connection strings, parameter values, and data source settings. Connect your dev workspace to a develop branch and production workspace to main, then use pull requests to promote reviewed changes.

Microsoft FabricGitDevOps

Industry Solutions

See how we apply these solutions across industries:

Need Help With Power BI?

Our experts can help you implement the solutions discussed in this article.

Ready to Transform Your Data Strategy?

Get a free consultation to discuss how Power BI and Microsoft Fabric can drive insights and growth for your organization.