diff --git a/CHANGELOG b/CHANGELOG
index 3206c625cd088a9b6befa866ca358c30b4c5d67b..2303282f0a74165ff8187e66d99e03d1ec1b3901 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -49,6 +49,7 @@ v 7.11.0 (unreleased)
   - Add footnotes support to Markdown (Guillaume Delbergue)
   - Add current_sign_in_at to UserFull REST api.
   - Make Sidekiq MemoryKiller shutdown signal configurable
+  - Add "Create Merge Request" buttons to commits page and push event.
 
 v 7.10.2
   - Fix CI links on MR page
diff --git a/app/helpers/compare_helper.rb b/app/helpers/compare_helper.rb
index 01847c6b807c1e7049d2e1f808a81185c9894de8..fe339d32155f2ebcc90141a11021bc635d06481d 100644
--- a/app/helpers/compare_helper.rb
+++ b/app/helpers/compare_helper.rb
@@ -1,21 +1,21 @@
 module CompareHelper
-  def compare_to_mr_button?
-    @project.merge_requests_enabled &&
-      params[:from].present? &&
-      params[:to].present? &&
-      @repository.branch_names.include?(params[:from]) &&
-      @repository.branch_names.include?(params[:to]) &&
-      params[:from] != params[:to] &&
+  def create_mr_button?(from = params[:from], to = params[:to], project = @project)
+    project.merge_requests_enabled &&
+      from.present? &&
+      to.present? &&
+      project.repository.branch_names.include?(from) &&
+      project.repository.branch_names.include?(to) &&
+      from != to &&
       !@refs_are_same
   end
 
-  def compare_mr_path
+  def create_mr_path(from = params[:from], to = params[:to], project = @project)
     new_namespace_project_merge_request_path(
-      @project.namespace,
-      @project,
+      project.namespace,
+      project,
       merge_request: {
-        source_branch: params[:to],
-        target_branch: params[:from]
+        source_branch: to,
+        target_branch: from
       }
     )
   end
diff --git a/app/views/events/event/_push.html.haml b/app/views/events/event/_push.html.haml
index 60d7978b13f07a19b2ee23445335cee072c3f6ec..1da702be384346b465d32d4a03c70ed037ebc756 100644
--- a/app/views/events/event/_push.html.haml
+++ b/app/views/events/event/_push.html.haml
@@ -17,15 +17,27 @@
       - few_commits.each do |commit|
         = render "events/commit", commit: commit, project: project
 
+      - create_mr = current_user == event.author && event.new_ref? && create_mr_button?(event.project.default_branch, event.ref_name, event.project)
       - if event.commits_count > 1
         %li.commits-stat
           - if event.commits_count > 2
             %span ... and #{event.commits_count - 2} more commits.
+
           - if event.md_ref?
             - from = event.commit_from
             - from_label = truncate_sha(from)
           - else
             - from = event.project.default_branch
             - from_label = from
+
           = link_to namespace_project_compare_path(event.project.namespace, event.project, from: from, to: event.commit_to) do
-            %strong Compare → #{from_label}...#{truncate_sha(event.commit_to)}
+            Compare #{from_label}...#{truncate_sha(event.commit_to)}
+
+          - if create_mr
+            or
+            = link_to create_mr_path(event.project.default_branch, event.ref_name, event.project) do
+              create a merge request
+      - elsif create_mr
+        %li.commits-stat
+          = link_to create_mr_path(event.project.default_branch, event.ref_name, event.project) do
+            Create Merge Request
diff --git a/app/views/projects/commits/show.html.haml b/app/views/projects/commits/show.html.haml
index c8531b090a6257aaa57795f3a9af0422aa25a7d5..e2a8d3ffbb9bc47aa83b4ff4a8d5342f3fbe0fbd 100644
--- a/app/views/projects/commits/show.html.haml
+++ b/app/views/projects/commits/show.html.haml
@@ -8,11 +8,17 @@
 .tree-ref-holder
   = render 'shared/ref_switcher', destination: 'commits'
 
-- if current_user && current_user.private_token
-  .commits-feed-holder.hidden-xs.hidden-sm
-    = link_to namespace_project_commits_path(@project.namespace, @project, @ref, {format: :atom, private_token: current_user.private_token}), title: "Feed", class: 'btn' do
-      %i.fa.fa-rss
-      Commits feed
+.commits-feed-holder.hidden-xs.hidden-sm
+  - if create_mr_button?(@repository.root_ref, @ref)
+    = link_to create_mr_path(@repository.root_ref, @ref), class: 'btn btn-success' do
+      = icon('plus')
+      Create Merge Request
+
+    - if current_user && current_user.private_token
+      = link_to namespace_project_commits_path(@project.namespace, @project, @ref, {format: :atom, private_token: current_user.private_token}), title: "Feed", class: 'prepend-left-10 btn' do
+        = icon("rss")
+        Commits Feed
+
 
 %ul.breadcrumb.repo-breadcrumb
   = commits_breadcrumbs
diff --git a/app/views/projects/compare/_form.html.haml b/app/views/projects/compare/_form.html.haml
index dfb1dded9eaf70e2c12b1a425c189fb39a9f9366..a0e904cfd8bfb0b4242bae5860f015cb3168cb6c 100644
--- a/app/views/projects/compare/_form.html.haml
+++ b/app/views/projects/compare/_form.html.haml
@@ -13,9 +13,10 @@
         = text_field_tag :to, params[:to], class: "form-control"
      
     = button_tag "Compare", class: "btn btn-create commits-compare-btn"
-    - if compare_to_mr_button?
-      = link_to compare_mr_path, class: 'prepend-left-10 btn' do
-        %strong Make a merge request
+    - if create_mr_button?
+      = link_to create_mr_path, class: 'prepend-left-10 btn' do
+        = icon("plus")
+        Create Merge Request
 
 
 :javascript