Copying SHA-1 hashes from gitk to the clipboard
7 August 2014, by Simon Wilson
I don’t know if anyone else has this problem, but gitk with cygwin gives me the following headache all the time: I can’t copy more than one SHA-1 hash from it to the clipboard.
Say you want to diff between two commits, or cherry pick a range or something. Find the first commit, select the hash (like other cygwin/unix tools, selecting is enough to copy, so there’s no need to mash ctrl-c), paste it into the command line or wherever you want it.
So far so good. You needed two commits to diff between, so you select the other commit, select the SHA1 hash, paste it… and it pasted the first one. Even though you copied a new hash. The clipboard hasn’t updated, no matter how much you frantically click on the commit, the hash, select all or part of the text.
Of course you could just close gitk and open it again, but there’s a slightly quicker way.
After years of suffering, I finally googled it and found this comment on a cygwin-X bug report: https://bugs.freedesktop.org/show_bug.cgi?id=5735#c12. (Cygwin-X is the thing which allows these unix GUI tools to render in Windows.) Apparently gitk isn’t telling cygwin-X when the text in that field changes. The clipboard will only notice the new hash value if you point it at a different control (any other part of gitk should do), then back again.
So the trick is: copy some random text from a different field in gitk, then copy the hash you want from the SHA-1 field.