# Git vs. Other Version Control Tools for Scientific Research

Git is a distributed version control system in which every collaborator holds a complete copy of a project's history, while most alternatives are either centralized systems such as Subversion, where history lives on one server, or distributed systems such as Mercurial, which share Git's model but differ in command design and ecosystem. For scientific research, the rule of thumb is simple: choose Git for nearly everything, because it is what journals, repositories, funding agencies, and your future collaborators will assume, and choose Mercurial, Subversion, or another system only when a specific legacy requirement, a very large centralized dataset, or an existing team workflow makes its differences decisive.

This article explains the difference between Git and Mercurial for science, compares Git with the other version control tools researchers actually encounter, and gives concrete criteria, commands, and scenarios so you can make the choice deliberately rather than by accident.

## What Version Control Does for Scientific Research

A version control system (VCS) records snapshots of your files over time so you can review, compare, and restore any previous state. A repository is the folder whose history a VCS tracks. A commit is one recorded snapshot, labeled with a message, an author, a timestamp, and a unique identifier. Branching means creating an independent line of development, for example to test a new normalization method without disturbing the working analysis. Merging means combining the changes from two branches back into one.

Researchers need these capabilities for reasons that go beyond convenience:

- **Reproducibility.** A commit hash (a fixed identifier computed from the exact contents of a snapshot, in Git a 40-character SHA-1 value shown in short form such as `a1b2c3d`) pins the exact state of code and small data files that produced a figure. Recording that hash in a methods section or README makes the result traceable to a precise point in history.
- **Collaboration without file chaos.** A VCS replaces `analysis_final.R`, `analysis_final_v2.R`, and `analysis_FINAL_jims_edits.R` with a single tracked history plus branches named after what each line of work is doing.
- **Safe experimentation.** Branching lets you try a risky change, and if it fails, you abandon the branch instead of spending a day undoing edits by hand.
- **Provenance and accountability.** The history records who changed which line and when, which matters in multi-institution projects, clinical data work, and regulated environments.
- **Publishing and archiving.** Hosting platforms built around a VCS let you tag a release, generate a citable archive snapshot, and point reviewers at the exact code behind a manuscript.

Two families of systems provide these capabilities. In a centralized version control system, one server holds the history and each user checks out a working copy of the latest files, sending every commit to that server. Subversion (SVN) and Perforce (Helix Core) work this way. In a distributed version control system, every user clones the entire history and can commit, branch, and merge offline, then synchronize with peers by pushing and pulling commits. Git, Mercurial, and Fossil work this way. This architectural difference drives most of the practical differences discussed below.

## Git vs. Mercurial for Science

This is the most common head-to-head question, because Git and Mercurial are the two leading distributed systems and they were built to solve the same problem. The difference between Git and Mercurial for science is less about capability and more about design philosophy, command structure, and the ecosystem that grew around each.

### Shared model

Both systems are distributed, both record snapshots with content-based identifiers, both support branching and merging, both run identically on Linux, macOS, and Windows, and both are fast enough for typical research code repositories. If you learn the concepts of version control in one, they transfer to the other with little retraining. Anyone who tells you that one is fundamentally incapable of something the other does is usually describing a difference in ergonomics, not in the underlying model.

### Where they differ

**Command design.** Git exposes its internals to the user. The index, also called the staging area, is an intermediate layer between your working directory and your history, and commands like `git add` move changes into it before `git commit` records them. This gives fine-grained control, for example committing three of five modified files, but it is a concept beginners must learn up front. Mercurial has no mandatory staging area. `hg add` once marks a file for tracking, and from then on `hg commit` records all modified tracked files. Most Mercurial workflows are shorter on paper, which is why Mercurial has a long-standing reputation as easier to learn.

**Branching terminology.** In Git, a branch is a lightweight movable pointer, and creating one is instant and nearly costless, which encourages heavy branching. In Mercurial, you can use named branches, bookmarks (lightweight pointers similar to Git branches), or anonymous heads (unnamed divergent lines of development in the same repository). The Mercurial approaches are flexible, but the fact that there are three mechanisms to understand adds initial conceptual load, while Git's single mechanism is initially confusing in a different way because everything (branches, tags, the checked-out state tracked by `HEAD`) is a pointer you must learn to reason about.

**Safety defaults.** Mercurial was designed with conservative defaults and clear error messages. Destructive history rewriting is harder to do by accident. Git will let you amend, reset, rebase, and generally reshape history, which is powerful once you understand it and dangerous before you do. Modern Git has added safety valves, for example reflog (a log of where your branch pointers have been) and recovery via `git reflog`, but the first-week experience is gentler in Mercurial.

**Ecosystem in research.** This is the decisive difference. The major hosting and collaboration platforms used across science, GitHub, GitLab, and Bitbucket (which dropped new Mercurial hosting in 2020), are built around Git. Journal and funder policies that reference a hosting service overwhelmingly mean GitHub. Software Carpentry lessons, institutional training, hackathons, and most computational papers' code links point at Git repositories. Package managers and workflow tools in the bioinformatics ecosystem, including conda environment handling patterns, R package development tooling, continuous integration templates, and container registry integrations, assume Git. Mercurial has its own hosting options and plugins, for example the evolve extension for safe history editing, but the research world's default gravity is Git.

**Extensibility.** Mercurial has a cleaner, more stable internal plugin API, and it is genuinely pleasant to extend, which is one reason organizations with custom workflow needs have historically liked it. Git's extension model is looser, built on scripts and hooks rather than a stable internal API, but the sheer number of existing tools is far larger.

### So, git or mercurial for science?

Choose Git unless you have an affirmative reason not to. The reasons that actually justify Mercurial in a research setting are: an existing lab codebase in Mercurial with years of history, a team that has invested in Mercurial-specific tooling, a strong preference for its simpler command surface in a group with limited computational support, or an institutional repository infrastructure already built on it. Starting a new scientific project on Mercurial in 2026 means accepting friction with collaborators, publishing platforms, and training materials for a benefit, a gentler learning curve, that can be largely recovered with a Git GUI or a good cheat sheet.

## Git vs. Other Version Control Tools for Scientific Research: Side-by-Side Comparison

The table below compares the systems a research group is most likely to weigh. Adjacent tools that are not general-purpose version control systems, such as DVC for data, appear in a later section.

| Criterion | Git | Mercurial | Subversion (SVN) | Perforce (Helix Core) | Fossil |
|--|--|--|--|--|--|
| Architecture | Distributed | Distributed | Centralized | Centralized | Distributed |
| Typical learning curve | Steep at first, then flexible | Gentlest of the distributed systems | Simple basic workflow | Simple for users, administration is specialized | Simple, self-contained |
| Branching | Lightweight, instant, central to workflow | Flexible via bookmarks or named branches | Cheap but historically avoided, encourages linear work | Heavyweight per-branch streams in classic model | Lightweight |
| Offline work | Full history and commits offline | Full history and commits offline | Minimal, needs server for nearly everything | Needs server for most operations | Full offline support |
| Research ecosystem | Dominant, GitHub and GitLab, journal norms | Small but committed user base, decreasing hosting | Legacy institutional repositories, some physics and astronomy groups | Media, engineering, some large-scale [genomics core](/blog/guides/genomics-core) infrastructure | Niche |
| Large binary or data files | Needs Git LFS extension | Needs Largefiles extension | Handled natively, reasonably well | Strong native handling, a core design goal | Built-in wiki and tickets, moderate file handling |
| Partial-directory checkout | Not native, sparse checkout exists but is awkward | Not native | Native and natural | Native and strong, built for it | Not native |
| Built-in extras | None, relies on hosting platform | None, relies on hosting platform | None | Advanced access control, file locking | Issue tracker, wiki, and web interface built in |
| Typical research fit | Default choice for code, papers, workflows | Teams with existing Mercurial history or preference | Legacy projects, some big-data checkout patterns | Very large centralized assets, core facilities | Small self-contained projects wanting zero setup |

Reading the table by row: if your deciding criterion is collaboration ecosystem and publishing norms, Git wins outright. If it is gentle onboarding for a small team with no external collaborators, Mercurial or Fossil are defensible. If it is checking out one directory of a terabyte-scale repository over a slow link, centralized systems win by design. If it is large binary assets under strict access control, Perforce remains a serious contender in industry and some large scientific computing environments.

## Git for Scientists: How It Works in Practice

Understanding Git's model makes every later comparison meaningful. Three areas matter.

### The local model

When you run `git init` in a project directory, Git creates a hidden `.git` folder containing the entire repository database. A typical session looks like this:

```
git init
git add analysis.py
git commit -m "Initial QC script"
git log --oneline
```

Every commit stores a full snapshot of tracked files (internally as deduplicated objects, so unchanged files cost nothing extra), the identifier of its parent commit, author and timestamp information, and a message. The commit hash depends on the content, which means two commits with the same hash have identical histories. This property is what lets a hash recorded in a paper serve as a verifiable pointer to the exact code state.

Checking what changed before committing is routine hygiene:

```
git status
git diff
git diff analysis.py
```

To undo an accidental edit to a tracked file:

```
git restore analysis.py
```

### Branching and merging

A branch is a movable label attached to a commit. Creating one costs nothing:

```
git switch -c robustness-checks
```

You work, commit several times, and when the extra checks pass you merge back:

```
git switch main
git merge robustness-checks
```

If both branches edited the same lines, Git reports a conflict and marks the affected regions in the files. You resolve the conflict by editing the marked sections, then `git add` the resolved files and `git commit` to complete the merge. Conflicts feel alarming the first time and routine the tenth time. The habit that prevents most pain is committing and merging often, because small divergences produce small conflicts.

### Remotes and hosted collaboration

A remote is another copy of the repository that your local copy can exchange commits with. `git clone` copies a remote repository to your machine with the remote already configured. `git pull` fetches and integrates new commits from it. `git push` sends your commits to it. Hosting platforms add a collaboration layer on top: you push your branch to the platform and open a pull request (GitHub terminology) or merge request (GitLab terminology), which is a proposal to merge your branch that displays the full diff, runs automated checks if configured, and records reviewer comments. In research groups this mechanism doubles as code review for the analysis that supports a manuscript.

For scientists, the practical stack is therefore Git for history, a hosted platform for collaboration and review, and the platform's extras (issue tracking, releases, continuous integration, and archiving through services such as Zenodo's GitHub integration) for project management and curation.

## Mercurial: The Design-Decisions Alternative

Mercurial, invoked as `hg`, offers the same distributed model with a more uniform command surface:

```
hg init
hg add analysis.py
hg commit -m "Initial QC script"
hg log
```

The differences that matter in daily use:

- **No staging layer.** After a file is tracked, every commit includes all its modifications. To commit selectively, you use extensions such as `shelve` to set changes aside temporarily. This is simpler for beginners and coarser for experts who want surgical commits.
- **Consistent help and errors.** Mercurial's output and built-in help have long been praised for clarity, and commands follow predictable naming patterns more strictly than Git does.
- **Safer rewriting.** Amending or restructuring history requires the evolve extension, which tracks obsolescence explicitly rather than silently discarding commits. Teams that restructure history frequently, for example in a stacked-changes style of development, find this model principled.
- **Weaker pull in science.** The cost is ecosystem, not capability. Fewer researchers know it, fewer hosting services support it, fewer papers link to Mercurial repositories, and training curricula assume Git.

One historical note is worth knowing when evaluating old advice: Mercurial and Git were both released in 2005 in response to the BitKeeper licensing change affecting Linux kernel development, and for several years they were genuine peers. The gap that opened since is overwhelmingly about network effects and hosting economics rather than a technical shortfall. Reading a blog post from 2010 that declares Mercurial easier is accurate. Reading one that declares it competitive as a research default in 2026 is not.

## Subversion and Other Centralized Systems

Subversion represents the centralized design, and it remains in service in research settings for identifiable reasons.

How it works. `svn checkout` retrieves a working copy from a central server. You edit files, `svn commit` sends changes to the server with a new revision number (a single global counter, unlike Git's per-commit hashes), and `svn update` brings down colleagues' changes. There is no local history. If the server is unreachable, you cannot commit, inspect history, or create branches.

Where SVN still makes sense:

- **Partial checkouts of huge trees.** You can check out one subdirectory of a vast repository, for example one pipeline stage out of a multi-terabyte data processing tree, natively and efficiently. Distributed systems handle this with sparse-checkout features that are comparatively awkward.
- **Native handling of large binary files.** SVN stores binaries without an extension layer and diffs them poorly but stores them reliably, whereas Git's object model assumes text and needs Git LFS for large binaries.
- **Legacy continuity.** A lab or department with fifteen years of SVN history and institutional scripts has real switching costs, and migrating history to Git is possible but requires care.

The costs are significant for modern research practice. Centralized systems make every commit a network operation, which cripples work on laptops in the field, on a plane, or during an outage. Branching, while supported, is culturally and mechanically heavier, so SVN teams tend toward linear histories with everyone committing to a shared trunk, which produces more broken intermediate states. And the collaboration features researchers now expect, pull requests, per-branch continuous integration, review comments, do not exist in the SVN model and must be bolted on externally.

Perforce (Helix Core) deserves mention as the centralized system optimized for enormous binary assets with fine-grained access control. Some large sequencing cores, imaging facilities, and engineering-adjacent research groups use it for assets that Git handles poorly. It is licensed commercially with free tiers, and administration is a specialized job. Fossil is a small distributed system notable for bundling a wiki, issue tracker, and web interface into one self-contained executable, which suits solo projects that want version control plus project management with zero external services.

## Adjacent Tools Researchers Confuse with Version Control

Several tools appear in the same conversations and are worth placing precisely.

**Git LFS (Large File Storage).** An extension that replaces large files in a Git repository with small pointer files and stores the actual content on a separate server. You install it, run `git lfs install`, track patterns with `git lfs track "*.bam"`, and commit normally. It is still Git, still one history, but binary content is managed separately. For a genomics project with BAM files (binary alignment files often measured in gigabytes), Git LFS is the standard bridge.

**DVC (Data Version Control).** An open-source tool built on top of Git that version-controls datasets, models, and pipeline stages. Git tracks the small metadata files DVC writes, while DVC stores the large data in configured locations such as object storage. It answers the question Git alone cannot, namely how to give data files the same reproducibility as code, but it is not an alternative to Git. You use both together.

**Dropbox, Google Drive, and OneDrive.** These are file synchronization services, not version control systems. Some keep limited file histories, and none provide commits, branches, diffs, hashes, or merges. Two people editing the same file simultaneously produces a conflicted copy rather than a merge. Using them as a lab's primary code history is one of the most common and most correctable infrastructures mistakes in academic settings.

**Docker, conda, and workflow engines (Nextflow, Snakemake).** These control the environment and execution of an analysis. They complement version control, a commit pins the code, an environment file or container pins the software versions, and neither substitutes for the other. Reproducible computational work generally needs all three layers recorded together.

## When to Use Git: Decision Criteria

![Decision path asking about existing Mercurial history, huge centralized assets and mandates, ending in a Git recommendation.](/article-images/illustrations/git-vs-mercurial-for-science-choose-system.webp)

The question "when to use git" has a short answer, almost always, and a set of exceptions worth spelling out.

**Default to Git when any of the following apply, which covers the large majority of research projects:**

1. **Collaborators matter.** Any external collaborator, reviewer, or new student will plausibly know Git already. Onboarding cost approaches zero. With any other system, expect to teach it.
2. **Publishing and archiving matter.** Journal data policies increasingly expect a code repository link. GitHub is the lingua franca, and services that mint citable snapshots integrate with it directly.
3. **You want mainstream tooling.** Editors, RStudio, JupyterLab, continuous integration providers, and container platforms all have first-class Git support and uneven or absent support for alternatives.
4. **You need branching as a habit.** If your group will work on multiple analyses, releases, or methods in parallel, Git's branch model is the most fluid available.
5. **You want transferable skills.** Git fluency carries directly into industry positions for your trainees, which is a career-development benefit a department head can appreciate.

**Consider an alternative when:**

1. **An existing Mercurial repository is the center of the project.** Migrating history has one-time costs and small ongoing risks. If the code lives happily in Mercurial with tooling around it, continuing is defensible, and migration to Git is straightforward when you choose to do it (`hg-fast-export` converts history; test the result against the original before switching).
2. **The repository is dominated by huge centralized assets with partial-checkout needs.** If the core problem is "researchers each need one slice of a very large tree," SVN or Perforce handle it natively. A common hybrid is Perforce or SVN for the large assets and Git for the code.
3. **Regulatory or institutional mandate applies.** Some pharmaceutical and clinical settings standardize on a single system for validation and audit reasons. The mandate decides, not the technical comparison.
4. **A small, isolated team values maximum simplicity and self-containment.** Fossil's all-in-one design, or Mercurial's gentler surface, can serve a two-person project with no external dependencies. Accept that the project will be harder to share later.

The one clearly wrong answer for a new research code project is a file-synchronization service in place of a VCS, and the second most common wrong answer is no version control at all, with the code living only on a laptop.

## Worked Scenarios

**Scenario 1. A solo graduate student writing an R analysis.** Git, hosted privately on GitHub, is the right choice even with no collaborators. The private remote is an off-site backup with full history, the commit log documents analysis decisions chronologically for the thesis, and when the manuscript is ready the repository can be made public and archived with a DOI in minutes. Total cost is an afternoon learning `git init`, `git add`, `git commit`, and `git push`. Mercurial would work equally well technically and worse practically, because the advisor will ask for the GitHub link.

**Scenario 2. A computational genomics lab with five members and multi-gigabyte alignment files.** Git for all scripts, workflows, and configuration files, with GitHub private repositories and pull requests for review before merging changes into the `main` branch. Alignment files and other large artifacts are handled either by Git LFS or, more commonly, kept out of version control entirely, with the workflow engine (for example Snakemake or Nextflow) regenerating them from raw data, and raw data archived on institutional storage. The version control system is for everything a human authored, not for data the pipeline produces. Subversion would only enter the picture if the lab needed per-directory checkouts of a shared enormous tree, which is rare in this shape of project.

**Scenario 3. A wet-lab group collaborating with a distant computational partner.** The wet-lab members need to read and occasionally correct the methods and sample-tracking scripts but should not need deep Git fluency. Git on a hosted platform still wins, because the platform's web interface lets non-specialists browse files, read history, and propose edits through the browser without installing anything. The computational partner maintains proper branches. A protocol such as "always edit on a branch, never directly on `main`, open a pull request for every change" keeps the history reviewable even with mixed skill levels.

**Scenario 4. A physics department with a fifteen-year-old SVN repository of simulation code.** Here the honest recommendation is a staged migration. Keep SVN running while a mirrored Git repository is established, convert history with `git svn clone`, verify the result, and run new development in Git with a transition period where the SVN trunk is updated from Git for anyone still depending on it. The reasons to migrate, student onboarding, modern tooling, and collaboration with external groups, outweigh the comfort of legacy, but the migration should be scheduled work, not a Saturday hack.

## Common Mistakes and Limitations

![Four cards naming common version control mistakes: committing data, treating it as backup, giant commits and rewriting shared history.](/article-images/illustrations/git-vs-mercurial-for-science-common-mistakes.webp)

These are the errors that generate the most lost time in real research groups, plus honest limits of the tools.

**Committing data, credentials, or outputs.** Git tracks what you tell it to, and beginners commit everything, including 4 GB BAM files, API keys, patient identifiers, and the `output/` directory. The fix is a `.gitignore` file listing patterns to exclude, set up in the first hour of the project. Credentials that have entered history are considered compromised even if later deleted, because history retains them, so they must be rotated. Individual-level human data generally does not belong in a code repository at all, both for privacy and because it bloats the repository permanently, since Git keeps every version of every committed object forever.

**Treating version control as backup.** A local repository with no remote is a single point of failure. The history protects against logical mistakes, not against a stolen laptop or a failed drive. Push to a hosted remote or a second location regularly.

**One giant commit per month.** A commit named "updates" spanning three hundred files across two weeks of work defeats the purpose of history. Small, frequent commits with messages that say what changed and why make bisecting (searching history for the commit that introduced a bug with `git bisect`), reviewing, and reverting practical.

**Never merging, branching forever.** A branch that diverges for months produces a merge with hundreds of conflicts. The discipline that works is short-lived branches merged within days, plus a shared agreement that `main` always runs.

**Assuming the hosting platform is the version control system.** GitHub is a hosting and collaboration service built on Git. Your local repository is fully functional without it, and your project outlives any platform decision. Conversely, deleting the platform repository without checking that every clone is accounted for has destroyed history that local clones then had to recover.

**Rewriting shared history.** Commands that amend or rebase commits already pushed to a branch others have pulled force every collaborator to untangle their copies. The working rule: rewriting history is for commits that exist only on your machine, and once a commit is pushed to a shared branch, add new commits instead.

**Expecting Git to version everything automatically.** Git records only what is committed. An unsaved file in your editor, an untracked script never added, and a result table overwritten before any commit are all invisible to history. Version control complements, and does not replace, institutional data backups, and it applies cleanly to text. Binary formats that do not diff well are stored wholesale, so version-controlling a 200 MB proprietary instrument file sixty times costs 12 GB, which is why the large-file strategies above exist.

**Underestimating initial learning cost.** Git's first two weeks are genuinely confusing, the staging area, detached HEAD states, and the difference between `reset`, `restore`, and `revert` trip up everyone. The failure mode is abandoning the tool in week one and returning to folder copies. Taking a structured short course, using a GUI client if the command line resists, and agreeing on a minimal team command set (init, add, commit, switch, merge, pull, push, log) gets past the hump.

One limitation applies to every system in this comparison. Version control preserves the history of what was committed, with the quality of that history entirely dependent on team discipline, and no tool can recover work that was never recorded.

## Frequently Asked Questions

### Is Git or Mercurial better for scientific research?

For new research projects, Git, because the scientific ecosystem of hosting platforms, journal expectations, training materials, and collaborator knowledge is overwhelmingly built around it. Mercurial is technically comparable, often easier to learn, and the better choice only when you are continuing an existing Mercurial codebase or your team has a specific preference and no external collaboration requirements.

### What is the difference between Git and Mercurial for science?

Both are distributed version control systems that record snapshots, support branches, and work offline. Git exposes more internal machinery, such as the staging area, and rewards expertise, while Mercurial offers simpler commands and safer defaults. The practical difference in science is ecosystem: Git has the dominant hosting platforms and community, Mercurial has a small, dedicated user base.

### When should I use Git instead of Subversion?

Use Git whenever you want offline commits, lightweight branching, pull-request review, and compatibility with modern collaboration platforms, which describes nearly all research code. SVN remains reasonable when you need native partial checkouts of a very large centralized tree or when an institutional legacy repository makes switching costly.

### Can Git handle large data files?

Not well by default, because Git stores full copies of changed binary files in every commit. Use Git LFS for moderately sized binaries, keep large generated outputs out of the repository and regenerate them with a workflow engine, and version-control datasets through a companion tool such as DVC while Git tracks the metadata.

### Do I need GitHub to use Git?

No. Git runs entirely on your own machine, and you can have a complete project history with no remote at all. GitHub and similar platforms add hosting, collaboration, review, and archiving features, and for research they are usually worth using, but they are a service layered on Git rather than Git itself.

### How do I introduce Git to a lab that has never used version control?

Start with the minimal command set (init, add, commit, push, pull), agree that everyone works on branches and changes reach `main` only through pull requests, set up `.gitignore` before the first commit, and run one short hands-on session using a training exercise. Expect two weeks of friction and designate one person as the go-to for Git questions.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Is Git or Mercurial better for scientific research?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "For new research projects, Git, because the scientific ecosystem of hosting platforms, journal expectations, training materials, and collaborator knowledge is overwhelmingly built around it. Mercurial is technically comparable, often easier to learn, and the better choice only when you are continuing an existing Mercurial codebase or your team has a specific preference and no external collaboration requirements."
      }
    },
    {
      "@type": "Question",
      "name": "What is the difference between Git and Mercurial for science?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Both are distributed version control systems that record snapshots, support branches, and work offline. Git exposes more internal machinery, such as the staging area, and rewards expertise, while Mercurial offers simpler commands and safer defaults. The practical difference in science is ecosystem: Git has the dominant hosting platforms and community, Mercurial has a small, dedicated user base."
      }
    },
    {
      "@type": "Question",
      "name": "When should I use Git instead of Subversion?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Use Git whenever you want offline commits, lightweight branching, pull-request review, and compatibility with modern collaboration platforms, which describes nearly all research code. SVN remains reasonable when you need native partial checkouts of a very large centralized tree or when an institutional legacy repository makes switching costly."
      }
    },
    {
      "@type": "Question",
      "name": "Can Git handle large data files?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Not well by default, because Git stores full copies of changed binary files in every commit. Use Git LFS for moderately sized binaries, keep large generated outputs out of the repository and regenerate them with a workflow engine, and version-control datasets through a companion tool such as DVC while Git tracks the metadata."
      }
    },
    {
      "@type": "Question",
      "name": "Do I need GitHub to use Git?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. Git runs entirely on your own machine, and you can have a complete project history with no remote at all. GitHub and similar platforms add hosting, collaboration, review, and archiving features, and for research they are usually worth using, but they are a service layered on Git rather than Git itself."
      }
    },
    {
      "@type": "Question",
      "name": "How do I introduce Git to a lab that has never used version control?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Start with the minimal command set (init, add, commit, push, pull), agree that everyone works on branches and changes reach main only through pull requests, set up .gitignore before the first commit, and run one short hands-on session using a training exercise. Expect two weeks of friction and designate one person as the go-to for Git questions."
      }
    }
  ]
}
</script>