# Git: How to fix PR conflicts

When working with PRs, we may encounter conflicts trying to merge them. In this article, we will learn what conflicts are and how to fix them.

## What causes conflicts

![git conflict](https://cdn.hashnode.com/res/hashnode/image/upload/v1718273383500/bc9db80d-172b-44b0-bf56-8cbb300d40d0.png align="center")

In the image above, you can see that we have a main branch called `master`, and from this branch we created 2 new branches at the same *point in time*: `feat/1` and `feat/2`.

**Obs:** *point in time* is not the same as *time*. *Point in time* means that no changes happened in the branch since the last time you checked. On the example above, the `master` branch keeps on the same `point in time` until the `PR #1` is merged and the state of the branch changes.

After we created both branches (one can be created by you, and another one by your coworker), we start to make changes on them to develop a new feature, fix a bug, or improve the documentation, anything that we want to change.

As things on each branch are different, one of them will probably be faster to develop and will have the PR merged first, and once in a while may happen that 2 branches must change the same file.

As both branches were created at the same *point in time*, git will not be able to know which one of the changes it must keep, the one of `PR #1` or the one of `PR #2` (your PR), and it will cause the conflict.

## How to fix the conflict

If the git commands below don't work, it may be because you need to [configure your git](https://henriqueleite42.hashnode.dev/git-how-to-boost-your-performance) before executing them.

* Go back to the `master` branch (or the source branch for your current branch)
    
    * `git checkout master`
        
* Get the updated state
    
    * `git pull`
        
* Go back to your branch
    
    * `git checkout feat/2`
        
* [Rebase](https://git-scm.com/book/en/v2/Git-Branching-Rebasing) with master
    
    * `git rebase master`
        
* See the files that are causing conflicts
    
    * `git status`
        
* Go to the files and make the necessary change to the file to include both your changes and the previous changes.
    
* Add the files to be tracked by git
    
    * `git add .`
        
* Continue the rebase
    
    * `git rebase --continue`
        
* \[May not occur\] If a strange text appears, run the commands:
    
    * If you are using `vim`, press `Enter`, `:wq` and `Enter`
        
    * If you are using Ubuntu's default editor, press `Ctrl + O`, `Enter` and `Ctrl + X`
        
* Push the changes
    
    * `git push`
        

## Conclusion

And that's it! Solving conflicts is not the end of the world, we can fix them very quickly. Hope that this article helped you in some way, and if you have anything to say or an experience to share, please say it in the comments! 😄
