diff --git a/gitHUD.cabal b/gitHUD.cabal
--- a/gitHUD.cabal
+++ b/gitHUD.cabal
@@ -1,5 +1,5 @@
 name:                gitHUD
-version:             1.3.4
+version:             1.3.5
 synopsis:            More efficient replacement to the great git-radar
 description:         Please see README.md
 homepage:            http://github.com/gbataille/gitHUD#readme
diff --git a/src/GitHUD/Git/Command.hs b/src/GitHUD/Git/Command.hs
--- a/src/GitHUD/Git/Command.hs
+++ b/src/GitHUD/Git/Command.hs
@@ -1,5 +1,6 @@
 module GitHUD.Git.Command (
   gitCmdLocalBranchName
+  , gitCmdMergeBase
   , gitCmdRemoteName
   , gitCmdRemoteBranchName
   , gitCmdPorcelainStatus
@@ -27,6 +28,13 @@
 gitCmdLocalBranchName out = do
   localBranch <- readProcessWithIgnoreExitCode "git" ["symbolic-ref", "--short", "HEAD"] ""
   putMVar out localBranch
+
+gitCmdMergeBase :: String     -- ^ local branch name
+                -> MVar String    -- ^ output Mvar
+                -> IO ()
+gitCmdMergeBase localBranchName out = do
+  mergeBase <- readProcessWithIgnoreExitCode "git" ["merge-base", "origin/master", localBranchName] ""
+  putMVar out mergeBase
 
 gitCmdRemoteName :: String         -- ^ local branch name
               -> MVar String   -- ^ the output mvar
diff --git a/src/GitHUD/Git/Parse/Base.hs b/src/GitHUD/Git/Parse/Base.hs
--- a/src/GitHUD/Git/Parse/Base.hs
+++ b/src/GitHUD/Git/Parse/Base.hs
@@ -50,25 +50,22 @@
 fillGitRemoteRepoState repoState@( GitRepoState { gitRemote = ""} ) = return repoState
 fillGitRemoteRepoState repoState = do
   mvRemoteBranchName <- newEmptyMVar
+  mvMergeBase <- newEmptyMVar
   mvCommitsToPull <- newEmptyMVar
   mvCommitsToPush <- newEmptyMVar
-  mvMergeBranchCommitsToPull <- newEmptyMVar
-  mvMergeBranchCommitsToPush <- newEmptyMVar
 
   forkIO $ gitCmdRemoteBranchName (gitLocalBranch repoState) mvRemoteBranchName
+  forkIO $ gitCmdMergeBase (gitLocalBranch repoState) mvMergeBase
   remoteBranch <- removeEndingNewline <$> (takeMVar mvRemoteBranchName)
+  mergeBase <- removeEndingNewline <$> (takeMVar mvMergeBase)
 
   let fullRemoteBranchName = buildFullyQualifiedRemoteBranchName (gitRemote repoState) remoteBranch
 
-  forkIO $ gitCmdRevToPush "origin/master" fullRemoteBranchName mvMergeBranchCommitsToPush
-  forkIO $ gitCmdRevToPull "origin/master" fullRemoteBranchName mvMergeBranchCommitsToPull
+  -- TODO: gbataille - Check for merge-base. If none, don't execute remote part
   forkIO $ gitCmdRevToPush fullRemoteBranchName "HEAD" mvCommitsToPush
   forkIO $ gitCmdRevToPull fullRemoteBranchName "HEAD" mvCommitsToPull
 
-  mergeBranchCommitsToMergeStr <- takeMVar mvMergeBranchCommitsToPush
-  let mergeBranchCommitsToMerge = getCount mergeBranchCommitsToMergeStr
-  mergeBranchCommitsToRMasterStr <- takeMVar mvMergeBranchCommitsToPull
-  let mergeBranchCommitsToRMaster = getCount mergeBranchCommitsToRMasterStr
+  (mergeBranchToPull, mergeBranchToPush) <- getRemoteMasterMergeState mergeBase fullRemoteBranchName
 
   commitsToPushStr <- takeMVar mvCommitsToPush
   let commitsToPush = getCount commitsToPushStr
@@ -79,6 +76,24 @@
     gitRemoteTrackingBranch = remoteBranch
     , gitCommitsToPull = commitsToPull
     , gitCommitsToPush = commitsToPush
-    , gitMergeBranchCommitsToPull = mergeBranchCommitsToRMaster
-    , gitMergeBranchCommitsToPush = mergeBranchCommitsToMerge
+    , gitMergeBranchCommitsToPull = mergeBranchToPull
+    , gitMergeBranchCommitsToPush = mergeBranchToPush
   }
+
+getRemoteMasterMergeState :: String     -- ^ the merge base
+                          -> String     -- ^ the fully qualified remote branch name
+                          -> IO (Int, Int)    -- ^ tuple containing (to pull, to push)
+getRemoteMasterMergeState "" _ = return (0, 0)
+getRemoteMasterMergeState _ fullRemoteBranchName = do
+  mvMergeBranchCommitsToPull <- newEmptyMVar
+  mvMergeBranchCommitsToPush <- newEmptyMVar
+
+  forkIO $ gitCmdRevToPush "origin/master" fullRemoteBranchName mvMergeBranchCommitsToPush
+  forkIO $ gitCmdRevToPull "origin/master" fullRemoteBranchName mvMergeBranchCommitsToPull
+
+  mergeBranchCommitsToRMasterStr <- takeMVar mvMergeBranchCommitsToPull
+  let mergeBranchCommitsToRMaster = getCount mergeBranchCommitsToRMasterStr
+  mergeBranchCommitsToMergeStr <- takeMVar mvMergeBranchCommitsToPush
+  let mergeBranchCommitsToMerge = getCount mergeBranchCommitsToMergeStr
+
+  return (mergeBranchCommitsToRMaster, mergeBranchCommitsToMerge)
