Branching and merging in Git

Branching and Merging are very powerful features in Git.

There are may branching strategies, my favorite is well explained at

Pick any model you like and stick to it for a while to better understand and evaluate it. If you do not like that try another one.

In this model when we start to work on a new feature we

  • Create a new branch (let’s call it feature) based on the develop branch and switch to it.
    • git checkout develop
      git branch feature
      git checkout feature
  • Develop the new feature in the feature branch and add the changes to the repository.
    • git add .
      git commit -m "Feature is done in feature branch"
  • Before merging the changes of the feature branch back into the develop branch get the latest changes from the develop branch, apply your changes on top of them and test the application
    • git rebase develop
  • If there are merge conflicts, launch the Merge Tool. See Merging in Git with four panels in Windows  to set up and use a great merge tool.
    • git mergetool
  • It is possible that you will encounter merge conflicts in the same file multiple times. Just repeat the git mergetool command as many times as needed.
  • When you are done with merging, complete the rebase
    • git rebase --continue
  • Add and commit your changes in the feature branch
    • git add .
      git commit -m "Feature is tested in feature branch"
  • When you have tested the code of the new feature, merge it back to the develop branch.
    Switch back to the develop branch and merge the changes from the feature branch.

    • git checkout develop
      git merge feature
  • If there are any merge conflicts, Git will ask you to resolve them.

Merging in Git with four panels in Windows

Git is a great repository for small and large projects. It is easy to create and merge branches to separate code for the features you work on. To make merging easier you can use a free 4 panel merging tool, Perforce P4Merge.


  • Download the Perforce P4Merge Visual Merge Tool from
  • Select the operating system of your computer and click the Download button.

Install Perforce P4Merge

  • Double click the downloaded EXE file
  • Unselect the Administration tool
    P4Merge 01
  • Leave the server as is, we will not use it
    P4Merge 02
  • Just click OK, the address is not important for us
    P4Merge 03
  • Click Next again on the Client Configuration page
    P4Merge 04
  • On a Windows machine P4Merge will be installed at C:\Program Files\Perforce. Git cannot access P4Merge if the path contains a space character, so once the installation is done move the Perforce folder to the root of the C: drive.

Add the Perforce P4Merge settings to the Git config file

  • To use the same tool in every repository navigate to C:\Users\[YOUR USER NAME] and open the .gitconfig file.
  • If you already have [merge] and [mergetool “p4merge”] entries update them, if not, add the following lines. Even on Windows machines you have to use forward slashes (/) in the path for Git to understand it.
      tool = p4merge
    [mergetool "p4merge"]
      cmd = "C:/Perforce/p4merge" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
      keepTemporaries = false
      trustExitCode = false
      keepBackup = false

Solve merge conflicts

  • If you use the Git command line merge the branches. Git is case sensitive.
    • Change to the target branch
      • git checkout master
    • Merge the changes from the feature branch
      • git merge Feature
    • If there is a merge conflict type
      • git mergetool
    • Git will display the name of the file that caused the merge conflict
      • $ git mergetool
        Normal merge conflict for 'Test1.txt':
          {local}: modified file
          {remote}: modified file
        Hit return to start merge resolution tool (p4merge):
    • Hit Enter and the P4Merge opens with four panels
      • The left (Local) panel shows the changes in the current (target) branch,
      • The middle panel shows the original (Base) version of the file before both changes,
      • The right panel shows the coming changes (Remote) that were made in the branch you are merging from,
      • The bottom shows the result of the merge.
    • Change the file to resolve the conflict and click the Save button to save the result.

Merging is safe, because Git creates backup copies of all three version of the file in the same folder. If there are multiple files with merge conflicts Git will open the merge tool for each of them one-by-one.

  • Add the changes to the next commit
    • git add .
  • Commit the changes
    • git commit -m “Merged with P4Merge”

How to delete a folder from Git, but not from the local disk

I have accidentally included a folder in my Git repository, that I don’t want to include in source control. I wanted to remove it from the Git index, but not from the local hard drive.

The solution is the following command

git rm -r --cached myFolder

If the folder name contains spaces enclose it in quotes "my folder"

This will remove the folder from the Git repository, but leave it on the local drive.

Visual Studio 2015 is very slow on Windows 10

When I have upgraded Windows 7 my computer to Windows 10 I have also installed Visual Studio 2015 professional. From the first moment Visual Studio 2015 was very slow. My computer was freezing all the time.

I have read many articles about the slowness of Visual Studio 2015, but I cold not find anything that helped, so I have decided to switch back to Windows 7. Unfortunately after the downgrade process my computer did not boot anymore. Finally I had to reinstall Windows 7 and all my applications. Luckily all my files were on the hard drive, so I did not lose anything.

Since that, I have found the following recommendation at

  • Uncheck [Tools->Options->General->Automatically adjust visual experience based on client performance]
  • Uncheck [Use graphics acceleration if available]
  • You can leave [Enable rich client visual experience] checked

Sooner or later I will have to bite the bullet and install Windows 10 again, hopefully by that time Microsoft corrects this very serious problem, or I will try these steps to make it work.


NUnit in Visual Studio 2015

To use NUnit in Visual Studio 2015

Create a unit test project and download NUnit from NuGet

  • Start Visual Studio 2015 and open or create a solution
  • In your solution create a new class library for your unit tests
  • Right click the unit test project and select Manage NuGet Packages
  • Type NUnit into the search field
  • Install
    • NUnit
    • NUnit Test Adapter
    • NUnit Runners

Create unit tests

Run the unit tests

DynDns update error

On Windows 8 and Windows Server 2012 the Dyn Updater cannot update the IP address if you set the IPv-4 Configuration to Automatic during installation. The log contains the following error messages:

daemon – WARNING – Unable to get IP addresses for …, will retry later.

frontend – WARNING – API request failed. Status: 500 Method: ipaddress.get

frontend – WARNING – API error: Error connecting to Please verify your internet connection and try again.

To make the Automatic IPv-4 Configuration setting work

  • Open a web browser and get the current IP address by navigating to
  • Open the Dyn Updater,
    • Select the  host you want to fix,
    • Click the Configure Selected Hosts button.
    • Select Static Address for the IPv4 Configuration,
    • Enter the current IP address,
    • Click the OK button.

    • Select the item again and click the Refresh Host List button.

    • Select the item again and click the Configure Selected Hosts button.DynDns04
    • Select the Automatic IPv-4 Configuration and click the OK button.


Value was either too large or too small for a UInt32 error message when checking files into TFS

When you try to check-in or shelve files in Microsoft Team Foundation Server (TFS) sometimes the following error message appears:

Value was either too large or too small for a UInt32.


There is an unsaved file in the IDE.


Click Save All in the tool bar and try to check-in the files again.

No Entity Framework provider found for the ADO.NET provider with invariant name ‘System.Data.SqlClient’

When one of the projects in your solution is referencing the Entity Framework to access a database the Entity Framework NuGet package is added to that project. In the Visual Studio IDE your application may work fine, but when you deploy it to the test or production server the following error message may appear:

Exception Type: System.Data.Entity.Core.MetadataException
Exception: Schema specified is not valid.
Errors: [YOUR_DATABASE].ssdl(2,2) : error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name ‘System.Data.SqlClient’. Make sure the provider is registered in the ‘entityFramework’ section of the application config file. See for more information.

To resolve the problem add the Entity Framework NuGet package to the main project of your application:

  • In the Solution Explorer right click the main project,
  • Select Manage NuGet Packages… in the context menu,
  • On the left side of the NuGet manager select Online, Microsoft and .NET,
  • On the right side enter EntityFramework into the search field and hit Enter,
  • In the middle click Install in the EntityFramework box.

How to add a new table to an existing Microsoft SQL Server replication publication

To add a new table to an existing MS SQL Server publication

  • Remote desktop into the database server, or a server in the same domain of the database server
  • Start Microsoft SQL Server Management Studio (SSMS)
  • Connect to the database with ComputerName\SQLServerName
    If there is only one instance of Microsoft SQL Server on the computer the two names are usually the same, but still both are needed, otherwise you get the following error message:SQL Server is unable to connect to server…
    Additional information:
    SQL Server replication requires the actual server name to make a connection to the server. Connections through a server alias, IP address, or any other alternate name not supported. Specify the actual server name, …\…  (Replication.Utilities)
  • Right click the Local Publication
  • Select the Articles page
  • Uncheck the “Show only checked articles in the list” check box to see the not replicated tables
  • Select the tables you want to add to the replication
  • Click OK

Error creating a Scheduled Task on Windows Server 2008 R2

When the “Run whether user is logged on or not”  option is selected in the General tab of the Create Task window the Task Scheduler has to save the password of the selected user.

During the save the following error message appears:

Task Scheduler

An error has occurred for the task <task name>. Error message: The following error was reported: A specified logon session does not exist. It may have already been terminated.

To enable the Task Scheduler to save the password of the selected user, disable the Network access: Do not allow storage of passwords and credentials for network authentication security policy of the server:

  • Click the Start button of the Start Menu and enter SECPOL.MSC into the Search programs and files text field
  • On the left side select Security Settings | Local Policies | Security Options
  • On the right side double click the Network access: Do not allow storage of passwords and credentials for network authentication policy
    Do not allow storage of passwords
  • Select the Disabled radio button and click OK
    Do not allow storage of passwords Disabled