Back to Git & Dev Tools
2026-02-088 min read

git-merge-one-file[1] (Git & Dev Tools)

Learn git-merge-one-file[1] (Git & Dev Tools) step by step with clear examples and exercises.

Why This Matters

In software development, collaboration is crucial for creating high-quality projects. Git, a popular version control system, helps developers work together by managing changes and merging code effectively. In this lesson, we will focus on merging one file using Git, which is essential for any developer working in a team or contributing to open-source projects.

Prerequisites

Before diving into the core concept of merging one file using Git, it's important to have a basic understanding of:

  1. Installing and setting up Git
  2. Creating and managing Git repositories
  3. Basic Git commands such as git init, git add, git commit, and git status
  4. Branching in Git (git branch)
  5. Switching between branches (git checkout)
  6. Resolving merge conflicts (understanding the conflict markers and manually editing files to resolve them)
  7. Creating a patch or diff (git diff) to understand the differences between two commits or branches
  8. Understanding Git tags for marking specific points in the project history
  9. Familiarity with common Git workflows such as Feature Branch Workflow, Git Flow, and Forking Workflow
  10. Basic command line navigation (navigating directories, file manipulation, etc.)

Core Concept

Creating a test repository

Let's start by creating a simple test repository to practice merging files:

$ mkdir git-merge-test
$ cd git-merge-test
$ git init

Create two files, file1.txt and file2.txt, with some initial content:

$ echo "Initial content for file1" > file1.txt
$ echo "Initial content for file2" > file2.txt

Creating a new branch and making changes

Now, let's create a new branch called branch-A and make changes to file1.txt:

$ git checkout -b branch-A
$ echo "Changes for branch A" >> file1.txt
$ git add .
$ git commit -m "Changes for branch A"

Switch back to the master branch and make changes to file2.txt:

$ git checkout master
$ echo "Changes for master" >> file2.txt
$ git add .
$ git commit -m "Changes for master"

Merging branches

Now that we have changes in both branches, let's merge branch-A into the master branch:

$ git checkout master
$ git merge branch-A

If there are no conflicts between the changes, Git will successfully merge the files. However, if there are conflicts, you will be prompted to resolve them manually.

Resolving conflicts

In case of a conflict during the merge, Git creates a file with the conflicting lines and marks it as <<<<<<<, =======, and >>>>>>>. To resolve the conflict, you can edit the file manually and remove the conflict markers, keeping only the desired changes. Once resolved, save and commit the changes:

$ git add <conflicting-file>
$ git commit -m "Resolved merge conflicts"

Merging a single file with specific strategies

In some cases, you may want to merge a single file using a specific strategy. Git allows you to specify this strategy by using the --strategy option:

$ git checkout master --their-branch <file>
$ git checkout branch-A --ours-branch <file>
$ git merge --strategy=recursive -X theirs <file>

In the example above, we first check out the file from the other branch (their-branch), then check out the file from our current branch (ours-branch). Finally, we perform a recursive merge using the theirs strategy on the specific file.

Merging with a patch or diff

You can also merge changes using a patch or diff created with the git diff command:

  1. Create a patch or diff between two commits:
$ git diff <commit-hash>..<another-commit-hash> > patch.diff
  1. Apply the patch to the working directory:
$ git apply patch.diff
  1. Commit the changes:
$ git add .
$ git commit -m "Applied patch from another branch"

Worked Example

Let's demonstrate merging a single file using a specific strategy and resolving conflicts manually. First, create a test repository as described in the Core Concept section.

Creating branches and making changes

Create two branches called branch-A and branch-B. Make changes to file1.txt in both branches:

$ git checkout -b branch-A
$ echo "Branch A content" >> file1.txt
$ git add .
$ git commit -m "Changes for branch A"

$ git checkout master
$ git checkout -b branch-B
$ echo "Branch B content" >> file1.txt
$ git add .
$ git commit -m "Changes for branch B"

Merging branches with a specific strategy

Now, let's merge branch-A into branch-B, using the ours strategy on file1.txt:

$ git checkout branch-B
$ git checkout branch-A --ours-branch file1.txt
$ git merge --strategy=recursive -X ours file1.txt

If there are no conflicts, Git will successfully merge the files. However, if there are conflicts, you will be prompted to resolve them manually.

Resolving conflicts manually

In this example, let's create a conflict intentionally:

$ git checkout master --their-branch file1.txt
$ echo "Intentionally creating a conflict" >> file1.txt
$ git add .
$ git commit -m "Created conflict in file1.txt"

Now, switch back to branch-B and merge branch-A using the ours strategy on file1.txt. Git will create a conflicted version of file1.txt:

$ git checkout branch-B
$ git checkout branch-A --ours-branch file1.txt
$ git merge --strategy=recursive -X ours file1.txt

Open the conflicted version of file1.txt, remove the conflict markers, and keep only the desired changes:

$ nano file1.txt

Save and exit the file, then add it to the staging area and commit the changes:

$ git add file1.txt
$ git commit -m "Resolved merge conflicts in file1.txt"

Common Mistakes

  1. Forgetting to stage changes before committing: Always ensure that you have staged all modified files using git add . or git add.
  2. Committing unstaged changes: Before committing, use git status to check the staging area and make sure only intended changes are being committed.
  3. Failing to resolve merge conflicts: When Git encounters a conflict during the merge process, it is essential to manually edit the conflicting files and remove the conflict markers before committing the changes.
  4. Ignoring the merge commit message: The merge commit message should provide context about the merged branch and any relevant information. Always write an informative and descriptive commit message.
  5. Merging without understanding the consequences: Before merging, always review the changes in both branches to ensure that you understand their implications and can resolve any potential conflicts.
  6. Not using specific strategies when merging a single file: In some cases, using a specific strategy (e.g., theirs, ours) may be necessary to merge a single file effectively.
  7. Merging with an outdated patch or diff: Always ensure that the patch or diff you are applying is up-to-date and relevant to the current state of your repository.
  8. Failing to handle merge conflicts in automated scripts: When using Git in automated scripts, it's essential to properly handle merge conflicts to avoid errors and maintain the integrity of the project.
  9. Neglecting to test merged code: After merging, it's crucial to thoroughly test the resulting codebase to ensure that there are no unexpected issues or errors.
  10. Not considering the impact on other developers: Merging changes can affect other developers working on the same branch or repository. Always communicate with your team members about the changes you are making and coordinate merges accordingly.

Practice Questions

  1. You have a Git repository with two branches, branch-A and master. Both branches have changes in a file named file1.txt. How would you merge branch-A into the master branch?
  2. You have created a patch or diff between two commits using the command git diff .. > patch.diff. How can you apply this patch to your working directory and commit the changes?
  3. During a merge, Git encounters a conflict in a file named conflicting-file. What should you do to resolve the conflict and complete the merge?
  4. You want to merge a single file using a specific strategy (e.g., ours or theirs) on a specific branch. How can you achieve this using the git merge command?
  5. In an automated script, how can you properly handle merge conflicts to avoid errors and maintain the integrity of the project?

FAQ

Q: How do I create a new branch in Git?

A: You can create a new branch using the command git checkout -b. This creates a new branch and automatically switches to it.

Q: What is the purpose of the git merge command?

A: The git merge command combines changes from two or more branches into one, allowing developers to collaborate effectively.

Q: How can I resolve merge conflicts in Git?

A: When Git encounters a conflict during the merge process, it creates a file with the conflicting lines and marks it as >>>>>>. To resolve the conflict, you can edit the file manually and remove the conflict markers, keeping only the desired changes. Once resolved, save and commit the changes.

Q: What happens if I forget to stage changes before committing them in Git?

A: If you forget to stage changes, they will not be included in the commit. To include them, use git add or git add ..

Q: Can I revert a specific change made in a previous commit using Git? If so, how?

A: Yes, you can revert a specific change made in a previous commit using the command git revert. This creates a new commit that undoes the changes made in the specified commit.

Q: What are some strategies you can use when merging a single file in Git?

A: In some cases, you may want to merge a single file using a specific strategy. Git allows you to specify this strategy by using the --strategy option, such as theirs, ours, or recursive.

Q: How do I merge changes using a patch or diff created with the git diff command?

A: To merge changes using a patch or diff created with the git diff command, follow these steps:

  1. Create a patch or diff between two commits: git diff .. > patch.diff
  2. Apply the patch to the working directory: git apply patch.diff
  3. Commit the changes: git add ., git commit -m "Applied patch from another branch"
git-merge-one-file[1] (Git & Dev Tools) | Git & Dev Tools | XQA Learn