Difference between Git and Nexus?

I can't seem to find what the difference is between Git and Nexus. Are the two comparable?


There are both referential:

  • one (Git) is a source referential for version control (with features like merging, branching, tags)
  • the other (Nexus) is an artifact referential for any delivery (binaries or not)

The referential database differs also:

  • Git has its own internal repository storage mechanism
  • Nexus is simply a collection of shared directories with a naming convention ( group.artifact.version ).
    As described in "What is a repository": a collection of binary software artifacts and metadata stored in a defined directory structure.

The idea is that, for large deliveries that can be produced quite often, it is much easier to store them in Nexus ( you can clean them easily enough: cd + rm ), as opposed to version them ( which makes a DVCS repo like Git way too big way too fast to be cloned easily ).

So their goals are different, as I explain in:

  • "How do different version control systems handle binary files?"
  • "Best practice to store .jar files in VCS (SVN, Git, …)"
  • "Using source controlled libraries in source controlled projects"

You manage what you code in Git, and what you build in Nexus.


@VonC has the high level, theoretical view.

In everyday use, you'd store your source code and its history in a git repository, and store your build artifacts (e.g. the compiled software you want to deliver) in Nexus.

As such, they are not really comparable, but complementary.