How to Resolve a merge conflict in GitHub

What is a Git?

Git is an open-source, distributed version control system (VCS), which has a remote repository on the server side and a local repository on the client side. This means that the file or code is not present in a central server, but there is a copy of the file stored on the client’s computer. 

A distributed version control system enables multiple developers to work in parallel with each other without any code conflicts. Git enables developers to revert and go back to an older version of the code whenever necessary.  A distributed version control system enables multiple developers to work in parallel with each other without any code conflicts. Git enables developers to revert and go back to an older version of the code whenever necessary. 

Git helps both developers and non-tech professionals by keeping track of their project files. It makes it easier for multiple individuals to work together, and it plays an extremely significant role in big projects that involve large teams.

What is a Git Merge Conflict?

A merge conflict is an event that takes place when Git is unable to automatically resolve differences in code between two commits. Git can merge the changes automatically only if the commits are on different lines or branches.

The following is an example of how a Git merge conflict works:

suppose Alice and Bob start off with version 1 of Foo.java from the remote repo. Alice makes some changes resulting in version 2A on her local repo, and Bob makes some changes resulting in version 2B on his local repo. [Note: Git doesn’t keep track of files using this kind of version numbers.] Next, Alice pushes her changes without any problems, so the remote repo now has version 2A of Foo.java and a record of how to get from version 1 to version 2A. Now when Bob tries to push his changes, he is telling the remote repo how to get from version 1 to version 2B. However, what the remote repo needs to know is how to merge versions 2A and 2B into a version 3. To resolve this conflict, Bob performs a pull so that his local repo contains a mix of versions 2A and 2B; any differences between Bob’s and Alice’s files will be marked. Once Bob has resolved the differences, he can push version 3 to the remote repo.

How to Resolve a Merge Conflict in Git?

There are a few steps that could reduce the steps needed to resolve merge conflicts in Git.

  • The easiest way to resolve a conflicted file is to open it and make any necessary changes
  • After editing the file, we can use the git add a command to stage the new merged content
  • The final step is to create a new commit with the help of the git commit command
  • Git will create a new merge commit to finalize the merge

Git Commands to Resolve Conflicts

gitlog –merge The git log –merge command helps to produce the list of commits that are causing the conflict
git diff The git diff command helps to identify the differences between the states repositories or files
git checkout The git checkout command is used to undo the changes made to the file, or for changing branches
git reset –mixed The git reset –mixed command is used to undo changes to the working directory and staging area
git merge –abort The git merge –abort command helps in exiting the merge process and returning back to the state before the merging began
git reset The git reset command is used at the time of merge conflict to reset the conflicted files to their original state

conclusion

Merge conflicts can be an intimidating experience. Luckily, Git offers powerful tools to help navigate and resolve conflicts. Git can handle most merges on its own with automatic merging features. A conflict arises when two separate branches have made edits to the same line in a file, or when a file has been deleted in one branch but edited in the other. Conflicts will most likely happen when working in a team environment.

References:

https://www.simplilearn.com/tutorials/git-tutorial/merge-conflicts-in-git#what_is_git
http://www.cs.utsa.edu/~cs3443/git/merge-conflicts.html
https://www.atlassian.com/git/tutorials/using-branches/merge-conflicts

Leave a Comment

Your email address will not be published. Required fields are marked *