DEV Community

Luis Esteban Saravia M
Luis Esteban Saravia M

Posted on

4

How to Merge a Git Feature Branch with a Squash Commit

When working with Git, it's common to create a feature branch to work on a specific feature or fix a bug. Once the feature or bug fix is complete, you'll want to merge the changes back into the main branch. One way to do this is with a squash commit, which combines all of the changes from the feature branch into a single commit on the main branch.

In this post, we'll show you how to use a simple Git script to merge a feature branch with a squash commit. The script creates a backup of the feature branch, creates a temporary branch from the main branch, squashes the feature branch into the temporary branch, and then commits the changes with a single message. It then points the feature branch to the temporary branch, force pushes the updated feature branch to the remote repository, and deletes the temporary branch.

Cloning the script

To use the script, you'll need to clone the GitHub repository to your local machine. You can do this by running the following command in your terminal:

git clone https://github.com/esaraviam/git_squash.git
Enter fullscreen mode Exit fullscreen mode

Once you've cloned the repository, you can navigate to the directory where the script is located and follow the instructions in the post to create an alias and use the script.

Installing the Script

  1. Make sure you have Git installed on your machine.
  2. Download or clone the script to your local machine.
  3. Open a terminal window and navigate to the directory where the script is located.
  4. Make the script executable by running the following command:

    chmod +x git_squash.sh
    

Creating an alias

  1. Open your .profile file in a text editor by running the following command:

    vi ~/.profile
    

Note: On some systems (such as macOS), the file may be named .bash_profile instead of .profile.

  1. Add the following line to the bottom of the file:

    alias git-squash="/path/to/script/directory/git_squash.sh"
    

Replace /path/to/script/directory with the full path to the directory where the script is located. Save and close the file.

This will create an alias for the script called git-squash.

  1. Source your .profile file by running the following command:
 source ~/.profile
Enter fullscreen mode Exit fullscreen mode

This will reload your .profile file and make the git-squash alias available in your terminal.

Usage

To use the script, follow these steps:

  1. Open a terminal window and navigate to the directory where your Git repository is located.
  2. Checkout the feature branch that you want to merge into the main branch.
  3. Run the script with the following command:
 git-squash <feature-branch> <main-branch>
Enter fullscreen mode Exit fullscreen mode

Replace <feature-branch> with the name of the branch that you want to merge and <main-branch> with the name of the main branch.

For example, if you want to merge a feature branch named "feature-123" into a main branch named "main", run the following commands:

git-squash feature-123 main
Enter fullscreen mode Exit fullscreen mode
  1. The script will create a backup of the feature branch, create a temporary branch from the main branch, squash the feature branch into the temporary branch, commit the changes, and then point the feature branch to the temporary branch. It will then force push the updated feature branch to the remote repository and delete the temporary branch.

That's it! The script should merge the feature branch into the main branch with a squash commit.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

đź‘‹ Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay