diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 3c8c32256..7999757b8 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -97,6 +97,7 @@ locked = Locked
 
 copy = Copy
 copy_url = Copy URL
+copy_hash = Copy hash
 copy_content = Copy content
 copy_branch = Copy branch name
 copy_success = Copied!
@@ -1283,6 +1284,7 @@ commits.signed_by_untrusted_user = Signed by untrusted user
 commits.signed_by_untrusted_user_unmatched = Signed by untrusted user who does not match committer
 commits.gpg_key_id = GPG Key ID
 commits.ssh_key_fingerprint = SSH Key Fingerprint
+commits.view_path=View at this point in history
 
 commit.operations = Operations
 commit.revert = Revert
diff --git a/templates/repo/commits_list.tmpl b/templates/repo/commits_list.tmpl
index 9fb2788a4..6793a81bf 100644
--- a/templates/repo/commits_list.tmpl
+++ b/templates/repo/commits_list.tmpl
@@ -4,8 +4,9 @@
 				<tr>
 					<th class="three wide">{{ctx.Locale.Tr "repo.commits.author"}}</th>
 					<th class="two wide sha">SHA1</th>
-					<th class="nine wide message">{{ctx.Locale.Tr "repo.commits.message"}}</th>
+					<th class="eight wide message">{{ctx.Locale.Tr "repo.commits.message"}}</th>
 					<th class="two wide right aligned">{{ctx.Locale.Tr "repo.commits.date"}}</th>
+					<th class="one wide right aligned"></th>
 				</tr>
 			</thead>
 			<tbody class="commit-list">
@@ -25,7 +26,6 @@
 							{{end}}
 						</td>
 						<td class="sha gt-df">
-							<button class="ui button copy-commit-sha gt-df gt-ac" data-clipboard-text="{{.ID}}">{{svg "octicon-copy" 14}}</button>
 							{{$class := "ui sha label"}}
 							{{if .Signature}}
 								{{$class = (print $class " isSigned")}}
@@ -76,6 +76,12 @@
 						{{else}}
 							<td class="text right aligned">{{TimeSince .Author.When ctx.Locale}}</td>
 						{{end}}
+						<td class="gt-pt-0 gt-pb-0">
+							<div class="gt-df gt-je">
+								<button class="btn interact-bg gt-p-3" data-tooltip-content="{{ctx.Locale.Tr "copy_hash"}}" data-clipboard-text="{{.ID}}">{{svg "octicon-copy"}}</button>
+								{{if $.FileName}}<a class="btn interact-bg gt-p-3" data-tooltip-content="{{ctx.Locale.Tr "repo.commits.view_path"}}" href="{{printf "%s/src/commit/%s/%s" $commitRepoLink (PathEscape .ID.String) $.FileName}}">{{svg "octicon-file-code"}}</a>{{end}}
+							</div>
+						</td>
 					</tr>
 				{{end}}
 			</tbody>
diff --git a/web_src/css/base.css b/web_src/css/base.css
index 1a4e9d16a..c1ebc959d 100644
--- a/web_src/css/base.css
+++ b/web_src/css/base.css
@@ -1328,13 +1328,6 @@ img.ui.avatar,
   display: inline-block; /* not sure whether it is still needed */
 }
 
-.ui .button.copy-commit-sha {
-  border: 1px solid var(--color-light-border);
-  margin-right: 3px;
-  padding: 6px 6px 4px;
-  background: var(--color-light);
-}
-
 .ui .button.truncate {
   display: inline-block;
   max-width: 100%;
diff --git a/web_src/css/repo.css b/web_src/css/repo.css
index 562fb4a34..8e3448c43 100644
--- a/web_src/css/repo.css
+++ b/web_src/css/repo.css
@@ -3051,9 +3051,6 @@ tbody.commit-list {
   .commit-table th.sha {
     display: none !important;
   }
-  .commit-table .commit-list .copy-commit-sha {
-    display: none !important;
-  }
   .comment-header {
     flex-wrap: wrap;
   }