Introduction | |
Git Stash | |
Cherry-pick | |
Resolving Conflicts | |
Task-01 | |
Task-02 | |
Task-03 | |
Conclusion |
Introduction
Welcome back to the DevOps journey! π In this next installment, we're diving into advanced Git techniques:Learn the art of stashing changes without committing. Perfect for quick context switches and keeping your workflow seamless. πΌCherry-pick the best features, handle conflicts with finesse, and keep your codebase sleek! π€Navigate through Git's conflict markers, harmonize divergent changes, and maintain code integrity like a pro! πExcited? Buckle up for these three tasks in "Advance Git & GitHub for DevOps Engineers: Part-2"! ππ
Hey Devs! π Ever needed to switch tasks quickly without committing changes? Enter Git Stash - your secret weapon! π
What's Git Stash?
Git Stash allows you to save changes temporarily without committing.
Perfect for those "quick-fix" moments or unexpected context switches.
How to Stash Like a Pro:
Use
git stash save
to stash your changes.Apply stashed changes later with
git stash apply
.
Why Stash?
Keep your working directory clean.
Effortlessly switch between tasks without cluttering your commit history.
Cherry-pickππ
What's Cherry-Pick?
Git Cherry-Pick lets you choose specific commits to apply to your current branch.
Perfect for grabbing the juiciest updates without merging the whole branch.
How to Cherry-Pick Like a Pro:
Use
git cherry-pick <commit-hash>
to select and apply a single commit.Craft your codebase with only the features and fixes you need.
Why Cherry-Pick?
Fine-tune your commits for a cleaner, customized history.
Ideal for integrating specific changes without the baggage.
Resolving Conflicts: It's time to master the art of Conflict Resolution! π€
What's Conflict Resolution?
Conflict resolution occurs when Git encounters conflicting changes in different branches.
Git marks the conflicting sections, and it's your job to harmonize them.
How to Resolve Conflicts Like a Pro:
Open the conflicted file(s) in your text editor.
Manually merge changes, remove conflict markers, and save.
Use
git add <conflicted-files>
to mark conflicts as resolved.Complete the merge with
git merge --continue
.
Why Master Conflict Resolution?
Keep your codebase clean and coherent.
Collaborate seamlessly even when multiple devs are making changes.
Conflicts are opportunities for collaboration. Ready to turn code clashes into victories? ππ§
Now lets do some Hands-on
Task-01:
Creating a new branch (dev
) and make some changes
# Create a new branch
git checkout -b dev
# Make changes to the code
# Edit files, add new files, etc.
# Stage the changes
git add .
# Commit the changes
git commit -m "Made changes on the dev branch"
Using git stash to save the changes without committing them
# Stash the changes
git stash
Switching to a different branch (div
), make some changes, and commit them
# Switch to a different branch
git checkout div
# Make changes to the code
# Edit files, add new files, etc.
# Stage the changes
git add .
# Commit the changes
git commit -m "Made changes on the div branch"
Using git stash pop to bring the changes back and apply them on top of the new commits
# Switch back to the original branch
git checkout dev
# Apply the stashed changes on top of the new commits
git stash pop
Task 2 :
Adding lines to version01.txt
in the development branch (dev
)
# Switch to the development branch
git checkout dev
# Open version01.txt in your text editor
# Add the following lines after the previous content:
# "This is the bug fix in development branch"
# ...
# Stage the changes
git add version01.txt
# Commit the changes
git commit -m "Added feature2.1 in development branch"
Adding the next set of lines to version01.txt
in the development branch (dev
)
# Open version01.txt in your text editor
# Add the following lines after the previous content:
# "This is the advancement of the previous feature"
# ...
# Stage the changes
git add version01.txt
# Commit the changes
git commit -m "Added feature2.2 in development branch"
Adding the final set of lines to version01.txt
in the development branch (dev
)
# Open version01.txt in your text editor
# Add the following lines after the previous content:
# "Feature 2 is completed and ready for release"
# ...
# Stage the changes
git add version01.txt
# Commit the changes
git commit -m "Feature2 completed"
Reflect these changes in the production branch (prod
) using rebase
# Switch to the master branch
git checkout master
# Create a new branch for production
git checkout -b prod
# Merge changes from dev into prod using rebase
git rebase dev
# Resolve any conflicts if needed
# Continue the rebase process if prompted
# Now prod contains the changes from dev
# You can push the changes to your remote repository if needed
git push origin prod
Task 3:
Identify the commit hash of "Added feature2.2 in development branch"
# Display the commit history in the development branch
git log dev
Cherry-pick the identified commit into the Production branch (prod
)
# Switch to the Production branch
git checkout prod
# Cherry-pick the commit from the development branch
git cherry-pick <commit-hash>
# Resolve any conflicts if prompted
# Continue the cherry-pick process
# After cherry-picking, the changes will be applied to the Production branch
Add the requested lines after "This is the advancement of the previous feature"
# Open version01.txt in your text editor
# Add the following lines after the specified content:
# "Added few more changes to make it more optimized."
# Stage the changes
git add version01.txt
# Commit the changes
git commit -m "Optimized the feature"
π₯ConclusionβοΈππ§
Our journey of day 11 into Advanced Git & GitHub for DevOps Engineers π, we've mastered complex workflows, from advanced branching strategies to cherry-picking commits π³. This toolkit empowers us in orchestrating smooth development pipelines π οΈ. A heartfelt thank you for your active participation in this learning adventure!
#AdvancedGit #GitHub #DevOpsEngineers #GitWorkflow #VersionControl ππ πππThanks for readingππ