Sourcetree Git Merge

Posted on by admin

In this article we will learn to configure external diff and merge tools for git difftool and git mergetool commands. External tools can make developer’s life easy, to compare changes before committing or resolving conflicts.

Github sourcetree tutorial
  1. Use Sourcetree branches to merge an update After looking through the Intergalactic Mall Magazine, you see a pair of speakers that you really want for the space station. They are big enough to produce a good amount of sound and soft enough that the lack of gravity won't cause them to crash.
  2. Sourcetree simplifies how you interact with your Git repositories so you can focus on coding. Visualize and manage your repositories through Sourcetree's simple Git GUI.
  3. Sourcetree Enjoy this cheat. Choose the contents of the branch that you are merging when there's a conflict. From the Git LFS index and storage when pushing.

The work flow for resolving merge conflicts is very streamlined: (The workflow in Sourcetree is vague and unintuitive) Tool tips on some buttons show what git commands will be executed when you press them (this helps you learn git). (Sourcetree hides most of the git internals, so you need to experiment. I am running OS X.10, Xcode 7 and SourceTree 2. When I select a conflicted file and Launch an external merge tool, there is a window that appears very briefly. And then nothing happens.

1) Supported external tools

There are many tools git supports, you can check with following command.

2) Configure diff and merge tool

In this article we will configure winmerge as diff and merge tool in git but you can configure any other tool with same way.
Before we start, make sure you have winmerge installed on your machine, you can download from here.

2.a) Git Bash

You can configure external diff and merge tool by git bash commands as show below.

After executing these commands you can use git difftool or git mergetool commands to open winmerge.

2.b) .gitconfig File

You can configure git external diff and merge tool by directly updating .gitconfig file as well.
Add following entries in the configuration file.

For windows users .gitconfig file is under C:UsersKheri.gitconfig

3) Additional Parameters

3.a) prompt

If you notice in above example, we specifically updated prompt = false with following command.

By default, every time you run git difftool command, git bash ask if you really want to launch external tool ? ( shown in below snippet). It might not be pleasant for most of developers. You can disable it setting it false.

3.b) trustExitCode

If your merge tool can indicate that a merge conflict is resolved successfully with its exit code, you can set trustExitCode to true, as below:

Otherwise, you will be prompted to indicate whether the merge conflict is resolved or not.

3.c) keepBackup

While resolving conflicts, mergetool creates backup files (with extension *.orig). These files can be removed safely, once the merge session is completed. If you want to automatically remove these files after the conflicts are resolved successfully, set the keepBackup flag to false as below:

4) Conclusion

In this short article we learned how to configure external tool for diff and merge.

References :

  • Java Default Methods Tutorial -
  • Java Optional orElseThrow() Example -
  • Java Optional ifPresent() Example -

Repository Management

CMD+0

Opens the Repository Browser window.

CMD+SHIFT+H

Show the Repository Browser and select the Remote section.

Prompts to add selected repositories to the Repository Browser.

UI Customization

CMD+SHIFT+K

Toggle the current repository's sidebar (branches, tags, and more.)

CMD+CTRL+W

Toggle the current repository's command history to view details.

CMD+1

Switch to the file browser and commit preparation area.

CMD+2

Switch to the primary commit history browser area.

CMD+3

Switch to the commit history search area.

Toggle the visibility of branch labels in commit history graphs for all repositories.

Toggle the visibility of tag labels in commit history graphs for all repositories.

Toggle the visibility of the Build Status column in the History view for the current repository.

Git Actions

CMD+SHIFT+F

Retrieve the current repository's branches, tags, and history from the remote server.

Start interactively updating a branch's content to align with another.

Connect another repository to act like a descendent of the current repository, instead of a remote dependency.

CMD+SHIFT+-

Remove the selected item(s) from the staging area prior to committing.

What is sourcetree

Mercurial Actions

CMD+SHIFT+U

Retrieve the current repository's state from the remote server.

Save an archival copy of the repository.

Repository Actions

Configure and migrate the current repository to Bitbucket Cloud.

CMD+SHIFT+,

Configure settings for the current repository.

CMD+R

Reload the current repository's commit history graph, file status, and build status.

CTRL+OPTION+R

Reload the current repository's status from the remote server.

CMD+SHIFT+C

Go to current repository's File Status view, focus the message editor, and populate with a message template if available.

CMD+SHIFT+R

Begin reverting one or more of the current repository's in-progress changes.

CMD+SHIFT+S

Save the current repository's in-progress changes for later use.

CMD+SHIFT+P

Send local commits for the current repository to the remote server.

CMD+SHIFT+L

Retrieve any new commits for the current repository from the remote server.

CMD+OPTION+U

Switch to a particular branch or revision in the current repository.

CMD+SHIFT+B

Create a new branch from the currently active branch.

CMD+SHIFT+M

Start the process of combining the target branch into the active one in the current repository.

CMD+SHIFT+T

Create a new tag for the active branch and commit in the current repository.

Connect a new remote server to the current repository.

Connect another repository as a dependency for the current repository.

CMD+SHIFT+W

Open the remote server's website (if available) for the current repository.

CMD+OPTION+P

Start a pull request on the remote server for the current active branch.

Sourcetree Git Merge Tutorial

Item Actions

CMD+SHIFT+O

Open the selected item(s) for the current repository.

Open a new Finder window with the selected item(s) for current repository highlighted.

CMD+CTRL+T

Open a new Terminal window to the directory for the current repository.

Space

Display a preview of the selected item(s)'s contents if possible.

Open the assigned application (see Preferences) to display the item's changes.

Save the current repository's in-progress changes as a file for transfer or later use.

Take the contents of a patch (file or text) and merge them into the current repository if possible.

CMD+SHIFT+=

Add the selected untracked item(s) to the current repository's index, making them available for commit.

CMD+Delete

Remove the selected item(s) from the current repository's index and on-disk; requires a commit to save.

CMD+OPTION+SHIFT+=

Combines the Add and Remove actions (see their entries) into a single task for all the selected item(s).

Remove the selected item(s) from the current repository's index; requires a commit to complete.

Create entries (specific patterns, file types, or other designations) for items that should be ignored completely in the current repository.

Ensure the selected item(s) are included in the current commit and focus the message editor, populating with a message template if available.

CMD+OPTION+R

Begin reverting in-progress changes for the selected item(s).

Begin reverting the selected item(s) to a specific point in their history.

Proceed to the next step of an in-progress action such as rebasing or grafting.

Stop an in-progress action such as rebasing or grafting.

CMD+OPTION+L

Show a list of commits specific to the selected item in reverse chronological order.

CMD+OPTION+B

Display the contents of the selected item, as lines, with the latest commit's information (author, date, metadata) alongside.

Create a copy of the selected item(s) in the current repository using appropriate source control mechanisms.

Move the selected item(s) from one location to another (including renaming) in the current repository using appropriate source control mechanisms.

Resolving Conflicts

Open the diff for the conflicted item(s) in the application specified in Preferences -> Diff.

Choose the contents of the current branch when there's a conflict.

Choose the contents of the branch that you are merging when there's a conflict.

Cancel an in-progress merge.

Update the selected item(s) to indicate conflicts were resolved manually.

Update the selected item(s) to indicate a conflict or other problem exists still.

Git LFS

Configure the necessary changes to enable Git LFS for the current repository.

Add or remove the selected item(s) from the Git LFS index and storage when pushing.

Fetch any LFS changes from the remote for the current repository and then checkout appropriate files.

Retrieve LFS changes from the remote for the current repository.

Retrieve large file content from the Git LFS storage endpoint to replace existing placeholder files in the current repository.

Remove LFS item(s) that have been checked out into the current repository. This frees up space if they are unused.

Git/Hg Flow

Configure Flow prefixes for the current repository.

CMD+OPTION+F

Begin the next Flow action based on what's currently in progress for the current repository.

Create a branch with the feature prefix and specified name.

Wrap up the in-progress Flow feature branch.

Create a branch with the release prefix and specified name.

Wrap up the in-progress Flow release branch.

Create a branch with the hotfix prefix and specified name.

Wrap up the in-progress Flow hotfix branch.

Text Formatting

CMD+OPTION+-

Wraps the selected text in Markdown syntax for a header.

CMD+OPTION+SHIFT+-

Inserts the Markdown syntax for a single line.

CMD+B

Wraps the selected text in Markdown syntax to be bold.

CMD+I

Wraps the selected text in Markdown syntax to be italicized.

CMD+L

Inserts the Markdown syntax for a bullet at the start of selected text.

CMD+OPTION+O

Inserts the Markdown syntax for a number sequence at the start of selected text.

CMD+'

Wraps the selected text in Markdown syntax to be formatted as code.

CMD+OPTION+K

Wraps the selected text in Markdown syntax for a link, focused to edit the URL portion.

Github sourcetree tutorial

Notes

Sourcetree Git Merge Branch To Master

  • New user? Check out Getting Started with Sourcetree.
  • Need help? Join the Atlassian Community today!
  • Created in January 2018 by Brian Ganninger.