diff --git a/gitk b/gitk
index 779d71cf5bc..9ad7bfc7e16 100755
--- a/gitk
+++ b/gitk
@@ -398,6 +398,7 @@ proc makewindow {} {
     bind . <Button-1> "click %W"
     bind $fstring <Key-Return> dofind
     bind $sha1entry <Key-Return> gotocommit
+    bind $sha1entry <<PasteSelection>> clearsha1
 
     set maincursor [. cget -cursor]
     set textcursor [$ctext cget -cursor]
@@ -1566,6 +1567,13 @@ proc incrfont {inc} {
     redisplay
 }
 
+proc clearsha1 {} {
+    global sha1entry sha1string
+    if {[string length $sha1string] == 40} {
+	$sha1entry delete 0 end
+    }
+}
+
 proc sha1change {n1 n2 op} {
     global sha1string currentid sha1but
     if {$sha1string == {}