Git Conflict Guide 🚀
Tags: github, git
Published: 2024-04-01 05:46:27


### What is a Git Conflict?
A Git conflict occurs when two branches have changed the same part of a file, and Git cannot automatically merge the changes. When you attempt to merge or rebase branches, Git will pause the process and mark the conflicted files.

> https://codexdindia.blogspot.com/2024/04/git-conflict-guide.html

### Steps to Resolve a Git Conflict

#### 1. Identify Conflicted Files
When you encounter a conflict, Git will mark the conflicted files. You can see these files by running:
```bash
git status
```

#### 2. Open the Conflicted File
Open the conflicted file(s) in your code editor. You'll see Git's conflict markers:
```plaintext
<<<<<<< HEAD
Your changes
=======
Incoming changes
>>>>>>> branch-name
```
- `<<<<<<< HEAD` marks the beginning of your changes.
- `=======` separates your changes from the incoming changes.
- `>>>>>>> branch-name` marks the end of the incoming changes.

#### 3. Resolve the Conflict
Manually edit the conflicted file to choose which changes to keep. You might want to:
- Keep your changes: Delete the incoming changes and conflict markers.
- Keep incoming changes: Delete your changes and conflict markers.
- Keep both changes: Manually edit the file to include the necessary changes.

#### 4. Remove Conflict Markers
After resolving conflicts, remove the conflict markers (`<<<<<<<`, `=======`, `>>>>>>>`) from the file.

#### 5. Add the Resolved File
Once you've resolved the conflict, stage the resolved file:
```bash
git add <conflicted-file>
```

#### 6. Commit the Changes
After staging the resolved file, commit the changes:
```bash
git commit -m "Resolved conflict by merging changes"
```

#### 7. Verify and Push
After resolving all conflicts in your merge or rebase, verify that everything is correct:
```bash
git status
```
Then, push the changes to the remote repository:
```bash
git push
```

### Tips for Handling Conflicts
- **Stay Calm:** Conflicts are a normal part of collaborative work.
- **Review Changes:** Understand both sets of changes before resolving conflicts.
- **Use Tools:** Some IDEs and Git GUIs offer conflict resolution tools.
- **Communication:** Coordinate with team members to prevent conflicting changes.

### Example Workflow

Let's say you are trying to merge `feature-branch` into `main`:
```bash
git checkout main
git merge feature-branch
```
If conflicts occur, follow the steps above to resolve them. Here's an example:
```plaintext
<<<<<<< HEAD
console.log("Hello, World!");
=======
console.log("Bonjour, le monde!");
>>>>>>> feature-branch
```
After resolving:
```plaintext
console.log("Hello, World!");
console.log("Bonjour, le monde!");
```
Then:
```bash
git add filename.js
git commit -m "Resolved conflict"
git push
```

### Additional Resources
- [Git Documentation on Resolving Merge Conflicts](https://git-scm.com/docs/git-merge#_how_conflicts_are_presented)
- [Atlassian Git Conflict Resolution Guide](https://www.atlassian.com/git/tutorials/using-branches/merge-conflicts)

Remember, resolving conflicts is a skill that improves with practice. Don't hesitate to experiment in a safe environment to get comfortable with the process.