Merging Git Without History and Resolving Conflicts Using Theirs

When merging Git branches, it is sometimes desirable to combine the changes from one branch into another without preserving the commit history of the merged branch. Additionally, conflicts may arise during the merge process that need to be resolved using the “theirs” strategy, which means accepting the changes from the branch being merged in.

Here’s a step-by-step guide on how to perform such a merge:

Step 1: Perform the Merge with Squash

To merge the changes from one branch into another without preserving the commit history, you can use the --squash option with the git merge command. The --squash option condenses all the commits from the merged branch into a single commit in the target branch.

1
git merge --squash <Branch Name>

Replace <Branch Name> with the name of the branch you want to merge into the current branch.

Step 2: Resolve Conflicts with “Theirs”

During the merge process, conflicts may arise if the same lines of code were modified in both branches. To resolve conflicts using the “theirs” strategy, which means accepting the changes from the branch being merged in, you can use the -Xtheirs option with the git merge command.

1
git merge --squash <Branch Name> -Xtheirs

Adding the -Xtheirs option ensures that, in case of conflicts, Git automatically resolves them by accepting the changes from the branch being merged in.

Step 3: Remove Deleted Files

If any files were deleted in the branch being merged in and you want to remove them from the current branch as well, you can use the git rm command. Replace {DELETED-FILE-NAME} with the name of the file that was deleted.

1
git rm {DELETED-FILE-NAME}

By removing the deleted files, you ensure that they do not appear in the final merged commit.


By following the above steps, you can merge Git branches without preserving the commit history and resolve conflicts using the “theirs” strategy. Remember to replace <Branch Name> with the actual branch name and {DELETED-FILE-NAME} with the name of any deleted files, as applicable.

Please note that squashing and discarding commit history should be done with caution, as it eliminates valuable information about the development process.

0%