On 12/30/2014 09:12 PM, Robert Dailey wrote: > I was surprised to find today that the following didn't work as expected: > > $ git show master@{"1 year ago"}:Path/To/File.h > > It gave me the following warning which did not make the problem obvious at > all: > warning: Log for 'master' only goes back to Mon, 8 Sep 2014 12:08:44 -0500. > > What it is trying to tell me (and I only found this out after a lot of > poking and prodding around Google) is that I can't refer to a commit > by date if it extends beyond the range of the reflog. > > I don't understand why this requirement is in place. Each commit has a > time stamp, so in theory it should be possible to calculate an > absolute date from the duration specified in the refspec and grab the > commit from `git log` from that. > > I can only assume I'm oversimplifying things and that there is a good > reason for this. If I can't get this to work, how can I view the > contents of a file at a specified relative time frame as I have done > above?
The syntax you are using, master@{"1 year ago"} tells you "what commit was the master branch in this clone pointing at one year ago?" What you presumably expected is "What is the last [1] commit that is *currently* on the master branch that was committed at least one year ago?" The command to ask your question is something like git log --date-order --before='1 year ago' -1 master There is yet a third similar question: "What is the last commit that is currently on the master branch that was *authored* at least one year ago? Please note that this question is even subtler, because author timestamps are often out-of-order even on a single branch (whereas commit timestamps are usually in order). I don't know of a simple git command to answer this question. Michael [1] Note that "last" is a bit subtle, because the history of "master" probably contains multiple branches with interleaved dates. So depending on your needs, you might want to add an option like "--first-parent" -- Michael Haggerty mhag...@alum.mit.edu -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html