diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
old mode 100644
new mode 100755
index 677a8a1a73a3f687d411d380ad8f91a87469d44a..2fadf7c8c81474a8520cd3e9c5c116237cf22fb8
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -402,7 +402,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
 
     if params[:ref].present?
       @ref = params[:ref]
-      @commit = @repository.commit(@ref)
+      @commit = @repository.commit("refs/heads/#{@ref}")
     end
 
     render layout: false
@@ -413,7 +413,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
 
     if params[:ref].present?
       @ref = params[:ref]
-      @commit = @target_project.commit(@ref)
+      @commit = @target_project.commit("refs/heads/#{@ref}")
     end
 
     render layout: false
diff --git a/changelogs/unreleased/fix-issue-23237.yml b/changelogs/unreleased/fix-issue-23237.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed0ffc0684d32d34defb2439a2e649fb07a42109
--- /dev/null
+++ b/changelogs/unreleased/fix-issue-23237.yml
@@ -0,0 +1,4 @@
+---
+title: "Fixes an issue in the new merge request form, where a tag would be selected instead of a branch when they have the same names"
+merge_request: 9535
+author: Weiqing Chu
diff --git a/spec/features/merge_requests/create_new_mr_spec.rb b/spec/features/merge_requests/create_new_mr_spec.rb
index 8cc0996acab638573ae8ecc1e3df181d20652e65..f1ad4a55246b48af43c8e341b53ade32a829b047 100644
--- a/spec/features/merge_requests/create_new_mr_spec.rb
+++ b/spec/features/merge_requests/create_new_mr_spec.rb
@@ -12,6 +12,33 @@ feature 'Create New Merge Request', feature: true, js: true do
     login_as user
   end
 
+  it 'selects the source branch sha when a tag with the same name exists' do
+    visit namespace_project_merge_requests_path(project.namespace, project)
+
+    click_link 'New Merge Request'
+    expect(page).to have_content('Source branch')
+    expect(page).to have_content('Target branch')
+
+    first('.js-source-branch').click
+    first('.dropdown-source-branch .dropdown-content a', text: 'v1.1.0').click
+
+    expect(page).to have_content "b83d6e3"
+  end
+
+  it 'selects the target branch sha when a tag with the same name exists' do
+    visit namespace_project_merge_requests_path(project.namespace, project)
+    
+    click_link 'New Merge Request'
+
+    expect(page).to have_content('Source branch')
+    expect(page).to have_content('Target branch')
+
+    first('.js-target-branch').click
+    first('.dropdown-target-branch .dropdown-content a', text: 'v1.1.0').click
+
+    expect(page).to have_content "b83d6e3"
+  end
+
   it 'generates a diff for an orphaned branch' do
     visit namespace_project_merge_requests_path(project.namespace, project)
 
diff --git a/spec/features/projects/compare_spec.rb b/spec/features/projects/compare_spec.rb
index 030043d14aa85233f68e104d95bbd7454b7aac0e..b2a3b111c9ee2cd3f025f193eff60c147890cffb 100644
--- a/spec/features/projects/compare_spec.rb
+++ b/spec/features/projects/compare_spec.rb
@@ -53,6 +53,7 @@ describe "Compare", js: true do
     dropdown = find(".js-compare-#{dropdown_type}-dropdown")
     dropdown.find(".compare-dropdown-toggle").click
     dropdown.fill_in("Filter by Git revision", with: selection)
-    find_link(selection, visible: true).click
+    wait_for_ajax
+    dropdown.find_all("a[data-ref=\"#{selection}\"]", visible: true).last.click
   end
 end
diff --git a/spec/support/test_env.rb b/spec/support/test_env.rb
index f1d226b6ae31384418970feec7daf99d70d527c8..648b0380f1864eca3dfd0d98842e58cc43b49390 100644
--- a/spec/support/test_env.rb
+++ b/spec/support/test_env.rb
@@ -37,9 +37,10 @@ module TestEnv
     'conflict-too-large'                 => '39fa04f',
     'deleted-image-test'                 => '6c17798',
     'wip'                                => 'b9238ee',
-    'csv'                                => '3dd0896'
+    'csv'                                => '3dd0896',
+    'v1.1.0'                             => 'b83d6e3'
   }.freeze
-
+  
   # gitlab-test-fork is a fork of gitlab-fork, but we don't necessarily
   # need to keep all the branches in sync.
   # We currently only need a subset of the branches