Version control with Git


In this course, attendees will learn how to develop and manage software projects using Git as a version control tool.

Detailed agenda

  • What is a version control system, types of version control systems, advantages of a distributed version control system, history of Git and key features, installing and configuring Git, introduction to basic version control management with Git, graphical user interfaces for Git.
  • Delta-based and snapshot-based version control systems, types of files in Git (tracked, untracked, ignored), states of a tracked file (commited, modified, staged), sections of a Git repository (working directory, staging/index, repository), initializing a Git repository, showing the repository status, adding files to the repository, commiting files, modifying files, displaying the difference between working directory, index and repository, removing and renaming files, creating aliases.
  • Branching concepts, creating, listing and removing branches, what is the HEAD, changing branches, doing commits in a separate branch, displaying a graphical representation of the commits history, merging branches, fast-forward merges, generating merge commits, resolving merge conflicts, comparing merge and rebase, displaying changes history in HEAD, concepts of a tag, the two types of tags (lightweight and annotated), creating and listing tags, comparing branches and tags.
  • Searching and filtering the history of a Git repository, the various ways to reference a commit in the repository, defining commit ranges, filtering the commit history with the log command, comparing the repository files, searching for strings and regular expressions in the repository, doing searches with the pickaxe feature, techniques to identify problems in the source code with blame and bisect.
  • Rewriting the repository commit history, squashing and dividing commits, reordering and removing commits, amending commits, using the rebase feature to rewrite commit history, moving a branch and HEAD to any commit, retrieving contents of the index and working directory, retrieving an older version of a repository file, reintroducing commits into the repository, reversing commits, saving and clearing the working directory.
  • Introduction to the inner workings of Git, the contents and organization of the .git / directory, the types of repository objects (blob, tree, commit, tag), how objects are stored in the repository, the object hash, manually adding a blob object to the repository, listing information about a repository object, adding objects to the index and creating a tree object, creating a commit object, setting up references to commit objects and moving HEAD, creating tag objects, Git objects compression and the garbage collection.
  • Managing and working with remote repositories, cloning a remote repository on a local machine, protocols supported by Git, listing, adding and removing remote repositories, tracking remote branches, pushing changes to a remote repository, fetching changes from a remote repository, merge or rebase changes to the local repository, creating and removing remote branches, sharing tags, formatting and applying patches, sending patches by email.
  • Establishing a development workflow with Git, examples of common development workflows, studying GitHub flow and git-flow, comparing fast-forward with merge commits, releasing releases with branches and tags, good practices for defining a commit message, tips and suggestions to establish workflows, generating an application build number with Git, working with submodules, implementing hook scripts.

For more details on the content of this training, you can download the agenda and the slides (in Portuguese).

Additional information

Students, engineers, systems analysts, software developers, leaders and managers of software development teams.

Attendees should know the basics of the command line interface, experience with software development and desirable (but not required) experience with a version control tool (CVS, Subversion, Perforce, TFVC, etc).

The course material contains the slides of the presentations, the book of activities and exercises, reference guides, and additional reference documents. All materials will be provided in an electronic format at the start of the training session.

The training can be presented in the following languages: Brazilian Portuguese and English.

If you plan to train your team or a group of people, consider a training session inside your company. In an in-company training session, the company is responsible for providing the necessary resources needed for the training, including the training room, data projector and development machines. This model also brings big advantages for the company, since the cost of transportation and accommodation of several employees is reduced only to the instructor. If your company has a special requirement, we can study a program that meets your needs, like preparing the training material for a specific hardware platform or developing additional content. Don’t hesitate to get in touch via email or the contact page .

Open training sessions are presented in a pleasant environment, with a properly equipped laboratory and Internet access. Classes are usually presented full-time, with a stop for lunch and a coffee break in the morning. If you are interested in attending an open session but there are no classes available, send a message via the contact page and we will notify you as soon as new classes open.

This training can be executed in a remote/online environment. Online training is presented live on a virtual meeting platform like Google Meet or Zoom.

Some pictures from previous training sessions:

Customers testimonials

Testimonials from companies and students who have already attended an Embedded Labworks training session

highlight shape

Samsung is a company leader in the market of high technology and digital media

“One of the best training courses I have ever attended. The instructor has total control of the training agenda and excellent teaching skills”

Adriano Saviolli, Samsung

LG Electronics is a South Korean multinational company and one of the largest electronics companies in Brazil

“I am used to being very critical and it’s been some time since I don’t evaluate a training course with high scores in all aspects. Congratulations on the training!”

Vitor de Paula, LG Electronics

AOC International is the brand of TPV Technology Limited, a manufacturer of LCD and LED displays for computers and televisions

“Unique training and no doubt much more valuable than many university degrees we have today on the subject”

Lucas Tadeu Portela, AOC International

CTEx is a Brazilian military organization subordinate to the science and technology department of the Brazilian government

“The Embedded Labworks training fully met all objectives, as well as being motivating for us to continue learning embedded Linux. I recommend it!”

José Antonio de Sousa Fernandes, CTEx

Inatel is a center of excellence in teaching and research in telecommunications engineering

High-quality training, very helpful and with a highly structured agenda"

Luis Gustavo, Inatel

Intelbrás is a 100% Brazilian company that operates in the areas of security, telecom and networking, being a leader in several market segments

“An excellent professional applying a very good practical training session with a rich study material. Thanks!”

Paulo Morgado, Intelbrás

Still have questions?

Send an email to or leave a message by filling out the form below:


Subscribe to the Embedded Labworks newsletter to receive messages about training, services and news from the embedded systems industry.

highlight shape