Mastering Git: Practical Scenarios for Effective Version Control
Explore some problem-based scenarios that senior DevOps/Linux engineers might encounter,
In this article we will explore some problem-based scenarios that senior DevOps/Linux engineers might encounter, along with the corresponding Git commands to address these issues
Scenario: Changing the Remote URL
Check the Current Remote URL
#Check Current Remote URL
git remote -v
#Change Remote URL
git remote set-url origin new_remote_url
#Verify Changes
git remote -v
#Fetch to Ensure Connectivity
git fetch
Explanation: Update the URL of the remote repository. Replace URL
with the URL of your remote.
Scenario: The branch is Behind the Master and Needs an Update
Command
git stash
git pull origin master
git stash apply
Explanation: Stash local changes, pull updates from the master branch, and reapply the stashed changes.
Scenario: Merge Conflict During Pull Request
Commands
git pull origin master
# resolve conflicts
git add .
git commit -m "Merge branch 'master' into feature_branch"
git push origin feature_branch
Explanation: Pull changes from the master branch, resolve conflicts, and push the updated feature branch.
Scenario: Accidentally Deleted a Local Branch
git reflog
git checkout -b new_branch_name commit_hash
Explanation: Recover the deleted branch using git reflog
to find the commit hash before deletion and then create a new branch.
Scenario: Squashing Commits Before Pull Request
git rebase -i HEAD~n
Explanation Interactively rebase the last 'n' commits to squash them into a single commit before submitting a pull request.
Scenario: Accidentally Pushed to the Wrong Branch
git reflog
git reset --hard commit_hash
git push --force origin correct_branch
Explanation: Identify the commit hash from the reflog and reset the branch, then force push the changes to the correct branch.
Scenario: Discarding Local Changes
git checkout -- file_path
Explanation: Discard changes in a specific file by checking it out from the last committed version.
Scenario: Need to Revert to a Previous Commit
git log
git revert commit_hash
git push origin branch_name
Explanation: Identify the commit to revert using git log
, create a new commit that undoes the specified commit, and push the changes.
Scenario: Large File Pushed to Repository
git filter-branch --tree-filter 'rm -rf path/to/large_file' HEAD
git push --force origin branch_name
Explanation: Use git filter-branch
to remove the large file from the entire commit history, then force-push the changes.
Scenario: Accidentally Committed to the Master Branch
git branch temp_branch
git reset --hard origin/master
git checkout -b feature_branch
Explanation: Create a temporary branch, reset the local master branch to the remote master, and create a new feature branch.
Check whose profile is configured
git config --global user.name
git config --global user.email
These commands will output the corresponding configuration values if they are set. If the output is empty, it means that the specific configuration has not been set, and we can set with the below commands
git config --global user.name
git config --global user.email