diff --git a/CHANGELOG b/CHANGELOG
index 481a0f8d24356e0bed18665c20c9ec5e8d0cb3d2..a3c3fb67b191b33a0f9bce68a87a94559455fe3e 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -28,6 +28,7 @@ v 8.5.0 (unreleased)
   - Support Akismet spam checking for creation of issues via API (Stan Hu)
   - Improve UI consistency between projects and groups lists
   - Add sort dropdown to dashboard projects page
+  - Hide remove source branch button when the MR is merged but new commits are pushed (Zeger-Jan van de Weg)
 
 v 8.4.3
   - Increase lfs_objects size column to 8-byte integer to allow files larger
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 89b6c49b36238f92e9b7fabdf8e63034f57ecb38..003623525089611e93e5daefe47a0ad3aef8e03d 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -284,7 +284,8 @@ class MergeRequest < ActiveRecord::Base
   def can_remove_source_branch?(current_user)
     !source_project.protected_branch?(source_branch) &&
       !source_project.root_ref?(source_branch) &&
-      Ability.abilities.allowed?(current_user, :push_code, source_project)
+      Ability.abilities.allowed?(current_user, :push_code, source_project) &&
+      last_commit == source_project.commit(source_branch)
   end
 
   def mr_and_commit_notes
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index 46f2f20b98667c74c1d0ed554101330123cf7c49..f9d0e1029d6fdd5b0eb6209d461784c0cca6fd1c 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -226,9 +226,15 @@ describe MergeRequest, models: true do
       expect(subject.can_remove_source_branch?(user2)).to be_falsey
     end
 
-    it "is can be removed in all other cases" do
+    it "can be removed if the last commit is the head of the source branch" do
+      allow(subject.source_project).to receive(:commit).and_return(subject.last_commit)
+
       expect(subject.can_remove_source_branch?(user)).to be_truthy
     end
+
+    it "cannot be removed if the last commit is not also the head of the source branch" do
+      expect(subject.can_remove_source_branch?(user)).to be_falsey
+    end
   end
 
   describe "#reset_merge_when_build_succeeds" do