DEV Community

Cover image for Comprehensive Guide to Git Branching, Merging, and Pull Requests
TD!
TD!

Posted on

Comprehensive Guide to Git Branching, Merging, and Pull Requests

It's Day #12 of #100daysofMiva coding challenge, I had issues with git so I spent the day mastering the concept and hope you learnt from what I've learnt also.

Git is a powerful version control system that enables developers to manage their source code efficiently. Understanding how to use Git effectively is crucial for collaborating on projects, maintaining code quality, and ensuring the integrity of your development workflow. This guide will cover essential Git operations such as branching, merging, pull requests, fetching, pushing, and resolving issues. Additionally, we will explore how to perform these tasks using Visual Studio Code (VS Code) without relying on the command line interface (CLI), and provide guidance for using Git on Windows, Linux, and macOS.

A visual studio code showing 4 git branches on the left

1 Understanding Git and Its Importance

Git is a distributed version control system that allows multiple developers to work on a project simultaneously without interfering with each other's work. It tracks changes made to files, helps in merging updates, and maintains a history of all modifications. Key benefits of using Git include:

  • Collaboration: Multiple developers can work on different features or bug fixes simultaneously.
  • Versioning: Git maintains a history of changes, enabling you to revert to previous states if needed.
  • Branching: You can create separate branches for different features or experiments without affecting the main codebase.
  • Code Integrity: Git ensures that your codebase remains consistent and free from conflicts through merging and conflict resolution.

A screenshot of the 100daysofMiva github repo showing where you can click Pull Request

2 Essential Git Operations

Branching

Branching allows you to diverge from the main codebase to develop new features, fix bugs, or experiment without affecting the main project. Common Git commands for branching include:

  • git branch <branch-name>: Create a new branch.
  • git checkout <branch-name>: Switch to the specified branch.
  • git checkout -b <branch-name>: Create and switch to a new branch in one step.
  • git branch -d <branch-name>: Delete a branch.

Why It's Important: Branching is essential for managing different lines of development. It keeps your main codebase stable while enabling concurrent development.

A screenshot of a github repo showing different branches and pointing to where to create new branch

Merging

Merging integrates changes from one branch into another. The most common use case is merging a feature branch into the main branch.

  • git merge <branch-name>: Merge the specified branch into the current branch.

Why It's Important: Merging allows you to integrate new features, updates, or bug fixes into the main codebase without losing work done in other branches.

A screenshot of a GitHub repo showing you branching, merging and pull requests

A screenshot of a GitHub repo showing you branching, merging and pull requests

Pull Requests

A pull request is a request to merge your branch into another branch, typically the main branch. Pull requests are used to review code before it is merged.

  • Creating a Pull Request: Typically done on Git platforms like GitHub, GitLab, or Bitbucket.

Why It's Important: Pull requests facilitate code reviews, ensure code quality, and allow for discussions before changes are merged into the main codebase.

Fetching

Fetching updates your local repository with changes from the remote repository without merging them into your current branch.

  • git fetch: Fetch updates from the remote repository.

Why It's Important: Fetching allows you to see what others have pushed to the remote repository without altering your local branches.

Pushing

Pushing uploads your local branch's commits to a remote repository.

  • git push: Push changes from your local branch to the corresponding remote branch.

Why It's Important: Pushing allows you to share your work with others and keep the remote repository up to date.

2.6 Pulling

Pulling is a combination of fetching and merging. It fetches changes from the remote repository and merges them into your current branch.

  • git pull: Fetch and merge changes from the remote repository to your current branch.

Why It's Important: Pulling keeps your local branch up to date with the latest changes from the remote repository.

Resolving Conflicts

Conflicts occur when changes in different branches interfere with each other. Resolving conflicts involves manually editing the conflicting files and committing the resolved changes.

A screenshot of a GitHub repo showing you branching, merging and pull requests

  • Common Commands:
    • git status: Check for conflicts.
    • Edit conflicting files to resolve conflicts.
    • git add <file>: Mark resolved files as staged.
    • git commit: Commit the resolved changes.

Why It's Important: Properly resolving conflicts ensures that your codebase remains functional and that all developers' contributions are integrated smoothly.

Git Commands Cheat Sheet

Here’s a quick reference for essential Git commands:

Branching

  • git branch <branch-name>: Create a new branch.
  • git checkout <branch-name>: Switch to the specified branch.
  • git checkout -b <branch-name>: Create and switch to a new branch.
  • git branch -d <branch-name>: Delete a branch.

Merging

  • git merge <branch-name>: Merge the specified branch into the current branch.

Pull Requests

A screenshot of a GitHub repo showing you branching, merging and pull requests

  • Create a pull request on platforms like GitHub.

Fetching

  • git fetch: Fetch changes from the remote repository.

Pushing

  • git push: Push your commits to the remote repository.

Pulling

  • git pull: Fetch and merge changes from the remote repository.

Conflict Resolution

  • git status: Identify conflicts.
  • git add <file>: Stage resolved files.
  • git commit: Commit resolved changes.

4 Using VS Code for Git Operations

Visual Studio Code (VS Code) provides an integrated Git interface that allows you to perform Git operations without using the CLI. Here’s how to use VS Code for common Git tasks:

Cloning a Repository

  1. Open VS Code.
  2. Go to View > Command Palette (or press Ctrl+Shift+P).
  3. Type Git: Clone and select it.
  4. Enter the repository URL and choose a folder to clone the repository.

Creating and Switching Branches

  1. Go to the Source Control view (click the Git icon on the left sidebar).
  2. Click on the branch name in the status bar.
  3. Select Create New Branch to create a branch.
  4. Select an existing branch to switch to it.

Committing Changes

  1. Go to the Source Control view.
  2. Stage your changes by clicking the + icon next to the files.
  3. Enter a commit message and click the checkmark icon to commit.

Pushing and Pulling

  1. After committing, click the ... icon in the Source Control view.
  2. Select Push to push your changes.
  3. Select Pull to pull updates from the remote repository.

Merging Branches

A screenshot of a GitHub repo showing you branching, merging and pull requests

  1. Switch to the branch you want to merge into.
  2. Go to the ... menu in the Source Control view.
  3. Select Merge Branch and choose the branch you want to merge.

Resolving Conflicts

  1. When a conflict occurs, VS Code will highlight conflicting files.
  2. Click on the conflicting file to open it.
  3. Use the inline editor to resolve conflicts by choosing between the incoming and current changes or combining them.
  4. Stage and commit the resolved files.

5 Platform-Specific Instructions

Windows

  • Git Installation: Download and install Git for Windows from git-scm.com.
  • VS Code Installation: Download and install VS Code from code.visualstudio.com.
  • Using Git Bash: Git for Windows includes Git Bash, a CLI that supports Git commands. VS Code also integrates with Git Bash if you prefer a CLI environment.

Linux

  • Git Installation: Install Git using your package manager. For example, on Ubuntu: sudo apt-get install git.
  • VS Code Installation: Download the .deb or .rpm package from code.visualstudio.com and install it using your package manager.
  • Using Terminal: Linux distributions typically include a terminal that supports Git commands.

macOS

  • Git Installation: Git is often pre-installed on macOS. If not, install it using Homebrew: brew install git.
  • VS Code Installation: Download and install VS Code from code.visualstudio.com.
  • Using Terminal: The macOS terminal supports Git commands and integrates seamlessly with VS Code.

Top comments (0)