I need the last commit date in git. This means the latest update date in my program.
I used the command : $ git log -1
but this command will give me the
You want the "repository wide last commit date for a given git user and git project, for a given branch.
The date you're after is the latest date shown when you visit your repo and go to commits -> master
for example:
https://github.com/sentientmachine/TeslaAverageGainByMonthWeekDay/commits/master
The top of the page shows the latest commit date.
Use git help log
for more info on format codes to pass to --format
to tell git log what kind of data to fetch.
The last commit date in git:
git log -1 --format="%at" | xargs -I{} date -d @{} +%Y/%m/%d_%H:%M:%S
#prints 2018/07/18 07:40:52
But as you pointed out, you have to run that command on the machine that performed that last commit. If the last commit date was performed on another machine, the above command only reports local last commit... So:
Same as above, but do a git pull first.
git pull;
git log -1 --format="%at" | xargs -I{} date -d @{} +%Y/%m/%d_%H:%M:%S
#prints 2018/07/18 09:15:10
git pulls on a schedule aren't cool because it's slow and you're banging the server with unnecessary network traffic. Just query the git rest api:
#assuming you're using github and your project URL is visible to public:
# https://github.com/yourusername/your_repo_name
#then do:
curl https://api.github.com/repos/yourusername/your_repo_name/commits/master
That blasts you in the face with a screen full of json, so send it your favorite json parser and get the field called date
:
curl https://api.github.com/repos///commits/master 2>&1 | \
grep '"date"' | tail -n 1
#prints "date": "2019-06-05T14:38:19Z"
gedge
has handy dandy improvements to incantations:git log -1 --date=format:"%Y/%m/%d %T" --format="%ad"
2019/11/13 15:25:44
Or even simpler: ( https://git-scm.com/docs/git-log/1.8.0 )
git --no-pager log -1 --format="%ai"
2019-12-13 09:08:38 -0500
Your choices are north, south, east, and "Dennis".