To continue with this content, please log in with your Data Access ID or create a new account.
Cancel Data Access ID
You may not be authorized to see this content. Please contact Data Access Europe for more information.
Cancel Data Access Europe
You are not authorized to see this content.
Cancel Data Access Europe
Next lesson:

Efficient version control with Git in DataFlex

Lesson 4 - Advanced Git features keeping your commit history clean

In this lesson, we will delve into advanced Git features designed to boost efficiency and uphold a well-structured commit history. These features encompass branching and merging, rebasing, cherry-picking, stashing, and Git hooks.

Branching and merging play pivotal roles in collaborating on a sizable codebase within a team. By creating branches, tasks can be divided, allowing simultaneous work on different aspects of the product and minimizing the risk of merge conflicts. Once a task is completed and committed, merging it into a development-dedicated branch consolidates multiple features and fixes for the next release.

A widely employed branch and merge strategy is GitFlow. This approach facilitates parallel development by creating feature branches from the main branch (develop). Completed changes are then merged back into the main branch in preparation for release. GitFlow incorporates branches such as Master, Develop, Feature, Release, and Hotfix branches.

Rebasing is a potent feature enabling the application of changes from one branch to another by individually reapplying each commit to the target branch. This process maintains a neat and organized commit history, effectively reducing the likelihood of merge conflicts. It is commonly used to update a feature branch with the latest changes from the development branch without introducing additional merge commits. Allow me to demonstrate how to perform a branch rebase.


1. Understanding the Importance of Branching and Merging:

  • In a team working on a large codebase, create branches to divide tasks and work simultaneously on different parts of the product.
  • Reduce the risk of merge conflicts by committing your work and merging it into a development branch dedicated to preparing multiple features and fixes for the next release.
  • Explore GitFlow, a commonly used strategy involving Master, Develop, Feature, Release, and Hotfix branches for parallel development and organized merges.

2. Utilizing the Power of Rebasing:

  • Rebasing allows applying changes from one branch to another, maintaining a clean and organized commit history.
  • To demonstrate, use a Git client (e.g., Fork) and rebase a branch on develop to update it.
  • Resolve any merge conflicts that arise during the rebase process.
  • After completing the rebase, note that you may need to force push to rewrite history.

3. Cherry-Picking Specific Commits:

  • Cherry-picking enables selecting and applying specific commits from one branch to another.
  • Demonstrate by choosing a commit from another branch that contains a crucial bug fix.
  • Right-click on the commit, select "Cherry-pick commit," and proceed to cherry-pick.
  • Push the branch to update the remote repository with the cherry-picked commit.

4. Stashing Changes Temporarily:

  • Stashing allows you to store changes without committing them, useful when switching branches or working on different features.
  • Demonstrate by stashing pending changes before switching to another branch for testing.
  • Find the "Stash" option in the Git client, provide a descriptive name for the stash, and confirm.
  • The stash is now visible in the stashes section.

5. Understanding Git Hooks:

  • Git hooks are scripts automatically run at specific points in the Git workflow.
  • They can enforce coding standards, run tests, or perform other automated tasks.


Now that you have a better understanding of Git, you can begin using it in your own applications to collaborate with others and maintain a clean commit history, enabling you to track changes over time. Throughout this course, we covered the fundamentals of Git, including some basic commands, tips for using Git with DataFlex, and explored advanced features that can enhance your workflow.