Merge In Sourcetree

broken image


  • Resolving SourceTree Merge Conflicts with Visual Studio posted in Hints and Tips, Visual Studio on April 28, 2016 by Craig I'm currently working with a company where Git is the source control repository of choice and SourceTree is the tool to handle the interactions with the repository.
  • 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.
Merge In Sourcetree

An Sourcetree custom action for opening an Gitlab merge request window in the Google Chrome browser gitlab sourcetree merge-request Updated Feb 20, 2021.

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.

Merge in sourcetree

An Sourcetree custom action for opening an Gitlab merge request window in the Google Chrome browser gitlab sourcetree merge-request Updated Feb 20, 2021.

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.

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.

Item Actions

Merge In Sourcetree In C

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.

Notes

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

This article was updated for Visual Studio 2017.

Sourcetree Merge To Master

Today, a short note on how to set up Visual Studio as a diif and merge tool in SourceTree and Git client. It's not commonly known that this IDE may be used for resolving merge conflicts, but as you'll see it's very simple to set up.

SourceTree config

First, open up the options window and go to Diff tab.

Change both External Diff Tool and Merge Tool to Custom. In the Diff Command field enter the full path to the vsdiffmerge.exe. For VS 2015 and below you can find it in the Visual Studio installation folder, under Common7IDE subfolder. Visual Studio 2017 has it slightly more hidden. Look under Common7IDECommonExtensionsMicrosoftTeamFoundationTeam Explorer.

As for the arguments fields, type in the following:

Diff tool: '$LOCAL' '$REMOTE' 'Source' 'Target' //t
Merge tool: '$LOCAL' '$REMOTE' '$BASE' '$MERGED' //m

Click OK, and And that's it! Now whenever a merge conflict occurs, you'll be able to resolve it using Visual Studio.

The only downside I found is that vsdifftool may take quite some time to start up. But if you don't close it after diffing each file, it'll work like a charm.

Merge In Sourcetree

Commandline Git config

By saving these settings in SourceTree, your .gitconfig file is updated with two entries: [difftool 'sourcetree'] and [mergetool 'sourcetree']. In my case it looks like the following:

Revert Merge In Sourcetree

</div><table><tbody><tr><td><div><div>2</div><div>4</div></div></td><td><div><div><span>cmd</span><span>=</span><span>'C:/Program Files (x86)/Microsoft Visual Studio 2015/Common7/IDE/vsdiffmerge.exe'</span><span>$</span><span>LOCAL</span><span>$</span><span>REMOTE </span><span>Source </span><span>Target</span><span>//t</span></div><div><span>cmd</span><span>=</span><span>'C:/Program Files (x86)/Microsoft Visual Studio 2015/Common7/IDE/vsdiffmerge.exe'</span><span>$</span><span>LOCAL</span><span>$</span><span>REMOTE</span><span>$</span><span>BASE</span><span>$</span><span>MERGED</span><span>//m</span></div></div></td></tr></tbody></table><h2 id='merge-two-branches-in-sourcetree'>Merge Two Branches In Sourcetree</h2><p>You can now use these to tell the commandline Git to use these when viewing a diff or merging. It's as simple as executing two git commands:</p><p><code>git config --global diff.tool sourcetree</code><br /><code>git config --global merge.tool sourcetree</code></p><p>Now, <code>git difftool</code> and <code>git merge</code> commands will launch Visual Studio.</p><h2 id='merge-in-sourcetree-photoshop'>Merge In Sourcetree Photoshop</h2><p>Doing so is of course perfectly possible even without SourceTree. Just add the <strong>difftool</strong> and <strong>mergetool</strong> entries to your .gitconfig file (it should be located in your home folder) and execute the two git config commands shown above.</p><br><br><br><br>
broken image