diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss
index 259a57e5925fc61dd936dfb0d233e3314df62fb6..698dd44a6ecae345b83de512777257e5699f243b 100644
--- a/app/assets/stylesheets/main.scss
+++ b/app/assets/stylesheets/main.scss
@@ -11,6 +11,7 @@ $hover_border: #ADF;
 
 /** GitLab Fonts **/
 @font-face { font-family: Korolev; src: font-url('korolev-medium-compressed.otf'); }
+$monospace: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono', 'lucida console', monospace;
 
 /** MIXINS **/
 @mixin shade {
diff --git a/app/assets/stylesheets/sections/commits.scss b/app/assets/stylesheets/sections/commits.scss
index 4f9360ad669797ab241deed85096f46a8df7a93f..cd74ff33d1e8c371a0362e3780eede336beb17d6 100644
--- a/app/assets/stylesheets/sections/commits.scss
+++ b/app/assets/stylesheets/sections/commits.scss
@@ -74,16 +74,33 @@
   margin-bottom:1em;
 
   .diff_file_header {
-    padding:7px 5px;
-    border-bottom:1px solid #CCC;
+    @extend .clearfix;
+    padding: 5px 5px 5px 10px;
+    color: #555;
+    border-bottom:1px solid #D8D8D8;
     background: #eee;
     background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf));
     background-image: -webkit-linear-gradient(#eee 6.6%, #dfdfdf);
     background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf);
     background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf);
 
-    span {
-      font-size:14px;
+    > span {
+      font-family: $monospace;
+      font-size:12px;
+      line-height: 30px;
+    }
+    
+    a.view-commit{
+      font-weight: bold;
+    }
+    
+    .commit-short-id{
+      font-family: $monospace;
+      font-size: smaller;
+    }
+    
+    .file-mode{
+      font-family: $monospace;
     }
   }
   .diff_file_content {
@@ -92,7 +109,7 @@
     background:#fff;
     color:#333;
     font-size: 12px;
-    font-family: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono','lucida console',monospace;
+    font-family: $monospace;
     .old{
       span.idiff{
         background-color:#FAA;
@@ -113,22 +130,31 @@
   .diff_file_content_image {
     background:#eee;
     text-align:center;
-    img {
+    .image {
+      display: inline-block;
       margin:50px;
       padding:1px;
       max-width:400px;
 
-      &.diff_image_removed {
-        border: 1px solid #C00;
+      &.diff_removed {
+        img{
+          border: 1px solid #C00;
+        }
       }
 
-      &.diff_image_added {
-        border: 1px solid #0C0;;
+      &.diff_added {
+        img{
+          border: 1px solid #0C0;
+        }
+      }
+      
+      .image-info{
+        margin: 5px 0 0 0;
       }
     }
 
     &.img_compared {
-      img {
+      .image {
         max-width:300px;
       }
     }
@@ -225,7 +251,7 @@
     float:left;
     @extend .lined;
     min-width:65px;
-    font-family: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono','lucida console',monospace;
+    font-family: $monospace;
   }
 
   .commit-author-name {
@@ -237,17 +263,29 @@
 }
 
 .diff_file_header a,
-.file_stats a {
-  color:$style_color;
+.file-stats a {
+  color: $style_color;
 }
 
-.file_stats {
-  span {
-    img {
-      width:14px;
-      float:left;
-      margin-right:6px;
-      padding:2px 0;
+.file-stats {
+  .new-file{
+    i{
+      color: #1BCF00;
+    }
+  }
+  .renamed-file{
+    i{
+      color: #FE9300;
+    }
+  }
+  .deleted-file{
+    i{
+      color: #FF0000;
+    }
+  }
+  .edit-file{
+    i{
+      color: #555;
     }
   }
 }
@@ -259,5 +297,5 @@
   font-size:13px;
   background: #474D57;
   color:#fff;
-  font-family: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono','lucida console',monospace;
+  font-family: $monospace;
 }
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb
index 135d002f21515940d14043431c5f436356443780..2349888ed7a062cd88cfb28438966034b9cb0615 100644
--- a/app/helpers/commits_helper.rb
+++ b/app/helpers/commits_helper.rb
@@ -57,9 +57,9 @@ module CommitsHelper
 
   def image_diff_class(diff)
     if diff.deleted_file
-      "diff_image_removed"
+      "diff_removed"
     elsif diff.new_file
-      "diff_image_added"
+      "diff_added"
     else
       nil
     end
diff --git a/app/views/commits/_diff_head.html.haml b/app/views/commits/_diff_head.html.haml
index 710e88576498fbf93ac64302fa55baae7b18e889..5aa542287feb24923f462bb2e339530d2996d7be 100644
--- a/app/views/commits/_diff_head.html.haml
+++ b/app/views/commits/_diff_head.html.haml
@@ -1,26 +1,26 @@
 %ul.bordered-list
-  - diffs.each do |diff|
+  - diffs.each_with_index do |diff, i|
     %li
       - if diff.deleted_file
-        %span.removed_file
-          %a{href: "##{diff.old_path}"}
+        %span.deleted-file
+          %a{href: "#diff-#{i}"}
+            %i.icon-minus
             = diff.old_path
-            = image_tag "diff_file_delete.png"
       - elsif diff.renamed_file
-        %span.moved_file
-          %a{href: "##{diff.new_path}"}
+        %span.renamed-file
+          %a{href: "#diff-#{i}"}
+            %i.icon-minus
             = diff.old_path
             = "->"
             = diff.new_path
-            = image_tag "diff_file_notice.png"
       - elsif diff.new_file
-        %span.new_file
-          %a{href: "##{diff.new_path}"}
+        %span.new-file
+          %a{href: "#diff-#{i}"}
+            %i.icon-plus
             = diff.new_path
-            = image_tag "diff_file_add.png"
       - else
-        %span.edit_file
-          %a{href: "##{diff.new_path}"}
+        %span.edit-file
+          %a{href: "#diff-#{i}"}
+            %i.icon-adjust
             = diff.new_path
-            = image_tag "diff_file_info.png"
 
diff --git a/app/views/commits/_diffs.html.haml b/app/views/commits/_diffs.html.haml
index 70fff53c1d1bed01dc95e4619d9d25193ad04f6b..6ffc6d8b0577fd3e170efcce6905fd1634da8dff 100644
--- a/app/views/commits/_diffs.html.haml
+++ b/app/views/commits/_diffs.html.haml
@@ -9,7 +9,7 @@
 
 %p.cgray
   Showing #{pluralize(diffs.count, "changed file")}
-.file_stats
+.file-stats
   = render "commits/diff_head", diffs: diffs
 
 - unless @suppress_diff
@@ -18,30 +18,44 @@
     - file = (@commit.tree / diff.new_path)
     - file = (@commit.prev_commit.tree / diff.old_path) unless file
     - next unless file
-    .diff_file
+    .diff_file{id: "diff-#{i}"}
       .diff_file_header
         - if diff.deleted_file
-          %i.icon-file
-          %span{id: "#{diff.old_path}"}= diff.old_path
+          %span= diff.old_path
+          
+          - if @commit.prev_commit
+            = link_to project_tree_path(@project, tree_join(@commit.prev_commit_id, diff.new_path)), {:class => 'btn right view-commit'} do
+              View file @
+              %span.commit-short-id= @commit.short_id(6)
         - else
-          = link_to project_tree_path(@project, tree_join(@commit.id, diff.new_path)) do
-            %i.icon-file
-            %span{id: "#{diff.new_path}"}= diff.new_path
+          %span= diff.new_path
+          - if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode
+            %span.file-mode= "#{diff.a_mode} 鈫� #{diff.b_mode}"
+          
+          = link_to project_tree_path(@project, tree_join(@commit.id, diff.new_path)), {:class => 'btn right view-commit'} do
+            View file @
+            %span.commit-short-id= @commit.short_id(6)
+            
         %br/
       .diff_file_content
         -# Skipp all non non-supported blobs
         - next unless file.respond_to?('text?')
-
         - if file.text?
           = render "commits/text_file", diff: diff, index: i
         - elsif file.image?
+          - old_file = (@commit.prev_commit.tree / diff.old_path)
           - if diff.renamed_file || diff.new_file || diff.deleted_file
             .diff_file_content_image
-              %img{class: image_diff_class(diff), src: "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
+              .image{class: image_diff_class(diff)}
+                %img{src: "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
+                %div.image-info= "#{number_to_human_size file.size}"
           - else
-            - old_file = (@commit.prev_commit.tree / diff.old_path)
             .diff_file_content_image.img_compared
-              %img{class: "diff_image_removed", src: "data:#{file.mime_type};base64,#{Base64.encode64(old_file.data)}"}
-              %img{class: "diff_image_added", src: "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
+              .image.diff_removed 
+                %img{src: "data:#{file.mime_type};base64,#{Base64.encode64(old_file.data)}"}
+                %div.image-info= "#{number_to_human_size file.size}"
+              .image.diff_added 
+                %img{src: "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
+                %div.image-info= "#{number_to_human_size file.size}"
         - else
           %p.nothing_here_message No preview for this file type