Git has become the worldwide standard for version control. So what exactly is it?
Git is a distributed version control system, which means that a local clone of the project is a complete
version control repository. These fully functional local repositories make it easy to work offline or
remotely. Developers commit their work locally, and then sync their copy of the repository with the copy
on the server. This paradigm differs from centralized version control where clients must synchronize code
with a server before creating new versions of code.
Git's flexibility and popularity make it a great choice for any team. Many developers and college
graduates already know how to use Git. Git's user community has created resources to train developers
and Git's popularity make it easy to get help when needed. Nearly every development environment has Git
support and Git command line tools implemented on every major operating system.
Git basics
Every time work is saved, Git creates a commit. A commit is a snapshot of all files at a point in time.
If a file hasn't changed from one commit to the next, Git uses the previously stored file. This design
differs from other systems that store an initial version of a file and keep a record of deltas over time.
Commits create links to other commits, forming a graph of the development history. It's possible to
revert code to a previous commit, inspect how files changed from one commit to the next, and review
information such as where and when changes were made. Commits are identified in Git by a unique
cryptographic hash of the contents of the commit. Because everything is hashed, it's impossible to make
changes, lose information, or corrupt files without Git detecting it.
Branches
Each developer saves changes to their own local code repository. As a result, there can be many different
changes based off the same commit. Git provides tools for isolating changes and later merging them back
together. Branches, which are lightweight pointers to work in progress, manage this separation. Once work
created in a branch is finished, it can be merged back into the team's main (or trunk) branch.
Files and commits
Files in Git are in one of three states: modified, staged, or committed. When a file is first modified,
the changes exist only in the working directory. They aren't yet part of a commit or the development
history. The developer must stage the changed files to be included in the commit. The staging area
contains all changes to include in the next commit. Once the developer is happy with the staged
files, the files are packaged as a commit with a message describing what changed. This commit becomes part
of the development history.
Staging lets developers pick which file changes to save in a commit in order to break down large changes
into a series of smaller commits. By reducing the scope of commits, it's easier to review the commit
history to find specific file changes.
Benefits of Git
The benefits of Git are many.
Simultaneous development
Everyone has their own local copy of code and can work simultaneously on their own branches. Git works
offline since almost every operation is local.
Faster releases
Branches allow for flexible and simultaneous development. The main branch contains stable, high-quality
code from which you release. Feature branches contain work in progress, which are merged into the main
branch upon completion. By separating the release branch from development in progress, it's easier to
manage stable code and ship updates more quickly.
Built-in integration
Due to its popularity, Git integrates into most tools and products. Every major IDE has built-in
Git support, and many tools support continuous integration, continuous deployment, automated
testing, work item tracking, metrics, and reporting feature integration with Git. This integration
simplifies the day-to-day workflow.
Strong community support
Git is open-source and has become the de facto standard for version control. There is no shortage
of tools and resources available for teams to leverage. The volume of community support for Git compared
to other version control systems makes it easy to get help when needed.
Git works with any team
Using Git with a source code management tool increases a team's productivity by encouraging
collaboration, enforcing policies, automating processes, and improving visibility and traceability of
work. The team can settle on individual tools for version control, work item tracking, and continuous
integration and deployment. Or, they can choose a solution like
GitHub or Azure DevOps that
supports all of these tasks in one place.
Pull requests
Use pull requests to discuss code changes with the team before merging them into
the main branch. The discussions in pull requests are invaluable to ensuring code quality and increase
knowledge across your team. Platforms like GitHub and Azure DevOps offer a rich pull request experience
where developers can browse file changes, leave comments, inspect commits, view builds, and vote to
approve the code.
Branch policies
Teams can configure GitHub and Azure DevOps to enforce consistent workflows and process across the team.
They can set up branch policies to ensure that pull requests meet
requirements before completion. Branch policies protect important branches by preventing direct
pushes, requiring reviewers, and ensuring clean builds.
This certification measures your ability to accomplish the following technical tasks: Design and implement processes and communications, design and implement a source control strategy, design and implement build and release pipelines, develop a security and compliance plan, and implement an instrumentation strategy.