Day13 to pro🚀in Devops♾️:Advanced Git & GitHub for DevOps Engineers 🚀

Jawaid AkhtarJawaid Akhtar
4 min read

Hello, Git enthusiasts!🌟 Today, we're diving into some advanced Git and GitHub concepts crucial for any DevOps engineer's toolkit. Understanding and mastering these concepts will make your version control practices more robust and efficient. We'll explore Git branching, the subtleties of revert vs. reset, and the intricacies of rebase vs. merge. Let's get our hands dirty with some code! 💻

Git Branching 🌿

Branching in Git is like having parallel universes in your codebase. Each branch is an independent line of development, allowing you to work on new features, bug fixes, or experimental ideas without interfering with the main project. The beauty of branching is that it keeps your work isolated until you’re ready to merge it back into the main line of development.

Why Branching is Essential

Branches enable better collaboration among team members. Multiple developers can work on different features simultaneously without stepping on each other’s toes. When a feature is ready, it can be merged back into the main branch, integrating smoothly into the project.

Creating and Using Branches

Creating a branch is straightforward:

git checkout -b feature-branch

This command creates a new branch called feature-branch and switches to it. Once your work on the branch is done, you can merge it back into the main branch using a pull request.

Git Revert and Reset ⏪⏮️

Both git revert and git reset allow you to undo changes in your repository, but they serve different purposes and are used in different scenarios.

Git Reset

git reset moves the HEAD pointer to a specified commit, effectively changing the commit history. It’s powerful but can be dangerous because it rewrites history. It’s best used for local changes that haven’t been shared with others.

Git Revert

git revert, on the other hand, is safer for collaborative environments. It creates a new commit that undoes the changes of a previous commit. This way, the commit history remains intact, and the undo action is clearly documented.

When to Use Which?

  • Reset: Use when you want to remove commits from the history (local changes).

  • Revert: Use when you need to undo changes in a shared repository without rewriting history.

Git Rebase and Merge 🔄🧩

What is Git Rebase?

git rebase allows you to move or combine a sequence of commits to a new base commit. This can result in a cleaner, more linear project history. However, it rewrites commit history, which can cause issues if not handled correctly, especially in a shared repository.

What is Git Merge?

git merge combines multiple sequences of commits into one unified history. Unlike rebase, merging retains the context of the original branches, which can make the history look more complex but also more informative.

Choosing Between Rebase and Merge

  • Rebase: Use for a cleaner, linear commit history. Ideal for local branches before sharing with others.

  • Merge: Use to preserve the full context of development, showing when branches were created and merged. Ideal for integrating completed features or fixes into the main branch.

Practical Tasks 🛠️

Task 1: Feature Development with Branches

Step 1: Create a Branch and Add a Feature

Let's add a new feature by creating a branch:

  1. Create a new file version01.txt inside the Devops/Git/ directory with the content: "This is the first feature of our application."

  2. Create a new branch from master:

     git checkout -b dev
    
  3. Add and commit your changes:

     git add file1.txt
     git commit -m "Added new feature"
    

Step 2: Push Changes to GitHub

Push your local commits to GitHub:

git push origin dev

Step 3: Add More Features with Separate Commits

Update file1.txt and commit after each change:

echo "This is the bug fix in development branch" >> file1.txt
git commit -am "Added feature2 in development branch"

echo "This is gadbad code" >> file1.txt
git commit -am "Added feature3 in development branch"

echo "This feature will gadbad everything from now" >> file1.txt
git commit -am "Added feature4 in development branch"

Step 4: Restore the File to a Previous Version

Revert the file to a previous state:

git revert HEAD~2

Task 2: Working with Branches

Demonstrate Branches

Create multiple branches and take screenshots of the branch structure using:

git branch

Merge Changes into Master

Make changes in dev and merge into master:

git checkout master
git merge dev

Practice Rebase

Try rebasing and observe the changes:

git rebase master

Conclusion

Mastering these advanced Git concepts will significantly enhance your ability to manage code effectively in a collaborative environment. Branching, resetting, reverting, merging, and rebasing are essential tools in a DevOps engineer's toolkit. Keep practicing, and you'll soon handle complex version control tasks with ease.

Feel free to share your thoughts or ask questions in the comments below. If you found this guide helpful, consider sharing it with your peers!

Happy Learning!✨

#90DaysOfDevops #TrainWithShubham #Linux #Devops #Automation #git #github

0
Subscribe to my newsletter

Read articles from Jawaid Akhtar directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Jawaid Akhtar
Jawaid Akhtar