diff --git a/app/assets/javascripts/merge_request_tabs.js.coffee b/app/assets/javascripts/merge_request_tabs.js.coffee
index 69a12fdd04547239d6604edb698f2d114da9a47e..b0eeb1db536db4b14f5299be5614cb6b8aec05c9 100644
--- a/app/assets/javascripts/merge_request_tabs.js.coffee
+++ b/app/assets/javascripts/merge_request_tabs.js.coffee
@@ -68,10 +68,10 @@ class @MergeRequestTabs
 
     if action == 'commits'
       @loadCommits($target.attr('href'))
-    else if action == 'builds'
-      @loadBuilds($target.attr('href'))
     else if action == 'diffs'
       @loadDiff($target.attr('href'))
+    else if action == 'builds'
+      @loadBuilds($target.attr('href'))
 
     @setCurrentAction(action)
 
@@ -110,7 +110,7 @@ class @MergeRequestTabs
     action = 'notes' if action == 'show'
 
     # Remove a trailing '/commits' or '/diffs'
-    new_state = @_location.pathname.replace(/\/(commits|builds|diffs)(\.html)?\/?$/, '')
+    new_state = @_location.pathname.replace(/\/(commits|diffs|builds)(\.html)?\/?$/, '')
 
     # Append the new action if we're on a tab other than 'notes'
     unless action == 'notes'
@@ -138,6 +138,16 @@ class @MergeRequestTabs
         @commitsLoaded = true
         @scrollToElement("#commits")
 
+  loadDiff: (source) ->
+    return if @diffsLoaded
+
+    @_get
+      url: "#{source}.json" + @_location.search
+      success: (data) =>
+        document.getElementById('diffs').innerHTML = data.html
+        @diffsLoaded = true
+        @scrollToElement("#diffs")
+
   loadBuilds: (source) ->
     return if @buildsLoaded
 
@@ -149,16 +159,6 @@ class @MergeRequestTabs
         @buildsLoaded = true
         @scrollToElement("#builds")
 
-  loadDiff: (source) ->
-    return if @diffsLoaded
-
-    @_get
-      url: "#{source}.json" + @_location.search
-      success: (data) =>
-        document.getElementById('diffs').innerHTML = data.html
-        @diffsLoaded = true
-        @scrollToElement("#diffs")
-
   # Show or hide the loading spinner
   #
   # status - Boolean, true to show, false to hide
diff --git a/app/views/projects/merge_requests/_new_submit.html.haml b/app/views/projects/merge_requests/_new_submit.html.haml
index 3f6e421fcd79190459d7a804a3809cb90fd08fbc..4172d5a4e88b4a06a99442c89e0ba90dcade23f6 100644
--- a/app/views/projects/merge_requests/_new_submit.html.haml
+++ b/app/views/projects/merge_requests/_new_submit.html.haml
@@ -23,22 +23,19 @@
       = link_to url_for(params), data: {target: 'div#commits', action: 'commits', toggle: 'tab'} do
         Commits
         %span.badge= @commits.size
-    - if @ci_commit
-      %li.builds-tab.active
-        = link_to url_for(params), data: {target: '#builds', action: 'builds', toggle: 'tab'} do
-          Builds
-          %span.badge= @statuses.size
     %li.diffs-tab.active
       = link_to url_for(params), data: {target: 'div#diffs', action: 'diffs', toggle: 'tab'} do
         Changes
         %span.badge= @diffs.size
+    - if @ci_commit
+      %li.builds-tab.active
+        = link_to url_for(params), data: {target: 'div#builds', action: 'builds', toggle: 'tab'} do
+          Builds
+          %span.badge= @statuses.size
 
   .tab-content
     #commits.commits.tab-pane
       = render "projects/merge_requests/show/commits"
-    - if @ci_commit
-      #builds.builds.tab-pane
-        = render "projects/merge_requests/show/builds"
     #diffs.diffs.tab-pane.active
       - if @diffs.present?
         = render "projects/diffs/diffs", diffs: @diffs, project: @project
@@ -50,6 +47,9 @@
         .alert.alert-danger
           %h4 This comparison includes a huge diff.
           %p To preserve performance the line changes are not shown.
+    - if @ci_commit
+      #builds.builds.tab-pane
+        = render "projects/merge_requests/show/builds"
 
 :javascript
   $('.assign-to-me-link').on('click', function(e){
diff --git a/app/views/projects/merge_requests/_show.html.haml b/app/views/projects/merge_requests/_show.html.haml
index 686a9a2c758c4c550379f5c22db08bbb57103b76..960d1561e737501b07c33593c98c96fed1867153 100644
--- a/app/views/projects/merge_requests/_show.html.haml
+++ b/app/views/projects/merge_requests/_show.html.haml
@@ -50,25 +50,25 @@
         = link_to commits_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: 'div#commits', action: 'commits', toggle: 'tab'} do
           Commits
           %span.badge= @commits.size
+      %li.diffs-tab
+        = link_to diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: 'div#diffs', action: 'diffs', toggle: 'tab'} do
+          Changes
+          %span.badge= @merge_request.diffs.size
       - if @ci_commit
         %li.builds-tab
           = link_to builds_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: '#builds', action: 'builds', toggle: 'tab'} do
             Builds
             %span.badge= @statuses.size
-      %li.diffs-tab
-        = link_to diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: 'div#diffs', action: 'diffs', toggle: 'tab'} do
-          Changes
-          %span.badge= @merge_request.diffs.size
 
   .tab-content
     #notes.notes.tab-pane.voting_notes
       = render "projects/merge_requests/discussion"
     #commits.commits.tab-pane
       - # This tab is always loaded via AJAX
-    #builds.builds.tab-pane
-      - # This tab is always loaded via AJAX
     #diffs.diffs.tab-pane
       - # This tab is always loaded via AJAX
+    #builds.builds.tab-pane
+      - # This tab is always loaded via AJAX
 
   .mr-loading-status
     = spinner
diff --git a/config/routes.rb b/config/routes.rb
index 359cd08e1345a8b57f7d4e2f47a224a1355edb20..046e1800235b25aa9610ce9977a7a4bac8fa3afe 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -570,9 +570,9 @@ Rails.application.routes.draw do
 
         resources :merge_requests, constraints: { id: /\d+/ }, except: [:destroy] do
           member do
+            get :commits
             get :diffs
             get :builds
-            get :commits
             post :merge
             get :merge_check
             get :ci_status
diff --git a/lib/gitlab/markdown/merge_request_reference_filter.rb b/lib/gitlab/markdown/merge_request_reference_filter.rb
index 79d67870b147fec42306f1a40858c9756bdce844..2eb77c46da7898c042a7693ea02581df04f6e135 100644
--- a/lib/gitlab/markdown/merge_request_reference_filter.rb
+++ b/lib/gitlab/markdown/merge_request_reference_filter.rb
@@ -28,10 +28,10 @@ module Gitlab
         case path
         when '/diffs'
           extras.unshift "diffs"
-        when '/builds'
-          extras.unshift "builds"
         when '/commits'
           extras.unshift "commits"
+        when '/builds'
+          extras.unshift "builds"
         end
 
         extras