Why do merges of pull requests not display a line in the graph, showing the merge? We know what branch is being merged in, it's right in the pull request, but yet the graph shows no line connecting them back into one line??? It just looks like all branches never got merged in, but they did? Who decided this was the way to display the graph?
Hey, I know this is an old question, but I'm experiencing this problem and I'd like to give some input. I'm not a Git expert so I'm going to need some help piecing this together.
In SourceTree, when we merge a branch locally the merge itself has its own commit. In the branching graph, each commit is a node connected by colored lines. So for two lines to merge together they need to merge at a commit, and this would be the merge commit, conventionally with a description like "Merge branch A into B."
Pull requests in GitHub seem to be handled kind of differently. When a pull request is "merged" there's no merge commit. It seems to just use the commits in the pull request to make new commits on the master branch. I'm not exactly sure what's going on, but this seems to produce unexpected behavior.
I ran the command ">git log --oneline --abbrev-commit --all --graph" and found the commit I was looking for in the output, and it's the same as SourceTree's graph. But I noticed something about the graph that I had missed before. There are two copies of my commit: one in its own branch that's never been merged, and one in the master branch which must be where the pull request was "merged." What's going on here? Why is the PR showing up as a direct commit to the master branch rather than a branch that's been merged? Is this expected behavior, or is someone merging pull requests incorrectly?
I'm facing the same problem and it seems to be caused by the way you merge the pull request.
I'm using Azure DevOps and when i close a pull request i can choose between a regular merge and a squash merge.
A squash merge takes all the changes in the pull request and create a single commit on the target branch. In this scenario history of the merge is lost.
I think that's why SourceTree does not show the 'merge line'
This is exactly what I'm experiencing. if we use "merge" in GH, sourcetree graph appears as expected. but using squash merge, we get the issue.
I think it goes beyond the graph, sourcetree truly believes the branch is not merged. when i verify that branch is merged, and want to clear it from my local branches using delete, sourcetree warns me that the branch is not merged, i have to force delete it.
is there anyway to get sourcetree to recognize GH squash merge as a merge?
Supported Platforms macOS Windows We recently introduced support for additional hosting services such as GitHub Enterprise, GitLab (Cloud, Community Edition, Enterprise Edition), and...
Connect with like-minded Atlassian users at free events near you!Find an event
Connect with like-minded Atlassian users at free events near you!
Unfortunately there are no Community Events near you at the moment.Host an event
You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events