get the last modification data of a file in git repo

Im trying to find the command to get the last modified date of a file in a local git repo.

Created the repo and have done one commit. Had to edit one file and will commit this file but was wondering what the last modification data of the file in the repo is (not the commit date).

Have no gui onl command line.

git log ./path/to/filename.php

only gives me the commit date


Solution 1:

The correct way to do this is to use git log as follows.

git log -1 --pretty="format:%ci" /path/to/repo/anyfile.any)

-1 restricts it to the very last time the file changed

%ci is just one of the date formats you can choose from others here at https://git-scm.com/docs/pretty-formats

This method is fool proof and 100% accurate.

Solution 2:

MitchellK's answer exactly fit my needs, setting my local files' last written times to what's in git. Here's a little C# LinqPad script to automate the process:

var root = new DirectoryInfo(@"C:\gitlab\mydirectory\");

Directory.SetCurrentDirectory(root.FullName); // Give git some context

var files = root.GetFiles("*.*", SearchOption.AllDirectories);

foreach (var file in files)
{
  var results = Util.Cmd("git", 
                         $"log -1 --pretty=\"format:%ci\" \"{file.FullName}\"",
                         true);
  
  var lastUpdatedString = results.FirstOrDefault();
  if (lastUpdatedString == null)
  {
    Console.WriteLine($"{file.FullName} did not have a last updated date!!");
    continue;
  }
  
  var dt = DateTimeOffset.Parse(lastUpdatedString);
  if (file.LastWriteTimeUtc != dt.UtcDateTime)
  {
    Console.WriteLine($"{file.FullName}, {file.LastWriteTimeUtc} => {dt.UtcDateTime}");
    file.LastWriteTimeUtc = dt.UtcDateTime;
  }
  else
  {
    Console.WriteLine($"{file.FullName} already updated.");
  }
}