diff --git a/CHANGELOG b/CHANGELOG
index fcf659c07f963b34fefa50bd11d6d457db84118e..ccc356a9617b0bfd69ac95919a35184272a56255 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -33,6 +33,7 @@ v 8.6.0 (unreleased)
   - Fix bug where Bitbucket `closed` issues were imported as `opened` (Iuri de Silvio)
   - Don't show Issues/MRs from archived projects in Groups view
   - Fix wrong "iid of max iid" in Issuable sidebar for some merged MRs
+  - Fix empty source_sha on Merge Request when there is no diff (Pierre de La Morinerie)
   - Increase the notes polling timeout over time (Roberto Dip)
   - Add shortcut to toggle markdown preview (Florent Baldino)
   - Show labels in dashboard and group milestone views
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 188325045e2f80968ea0e48896755ec701c1f1d7..30a7bd47be7029fba3bfdb3c51b6cc34499a4166 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -520,7 +520,11 @@ class MergeRequest < ActiveRecord::Base
   end
 
   def source_sha
-    last_commit.try(:sha)
+    last_commit.try(:sha) || source_tip.try(:sha)
+  end
+
+  def source_tip
+    source_branch && source_project.repository.commit(source_branch)
   end
 
   def fetch_ref
diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb
index a9df5fa1d3a8572cdfc6debdd25d9a112f0bc2da..e281e2f227b6cb0ddcf487d19bf35af5c3907c3f 100644
--- a/spec/factories/merge_requests.rb
+++ b/spec/factories/merge_requests.rb
@@ -51,6 +51,11 @@ FactoryGirl.define do
     trait :with_diffs do
     end
 
+    trait :without_diffs do
+      source_branch "improve/awesome"
+      target_branch "master"
+    end
+
     trait :conflict do
       source_branch "feature_conflict"
       target_branch "feature"
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index aceb2406eb370093aa733cbc81d1f34459d106cc..619c01b5523fc2a54f2768241caafa5145e6f8a4 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -96,6 +96,13 @@ describe MergeRequest, models: true do
       end
     end
 
+    context 'without diffs' do
+      subject { create(:merge_request, :without_diffs) }
+      it 'returns the sha of the source branch last commit' do
+        expect(subject.source_sha).to eq(last_branch_commit.sha)
+      end
+    end
+
     context 'when the merge request is being created' do
       subject { build(:merge_request, source_branch: nil, compare_commits: []) }
       it 'returns nil' do