131

I want to export the log of all commits in a repository to a text file. Is there a way to do this?

1

11 Answers 11

202

You'll just need to disable the pager.

git --no-pager log > log.txt

If you want to format it to look nicer, you can use parameters of git log.

Sign up to request clarification or add additional context in comments.

2 Comments

For some reason saving it like that it skips the header information for branches, any idea how i can get it? ex.: commit b28b1ae828ee87ffdc675dc1de299b51d3eb2ea2 (origin/master, ....etc, when i save it i dont see origin/master anymore
@SubqueryCrunch --decorate can be added to get that, see this thread
30

You should try:

git log > log.txt

2 Comments

In the present working directory from where you ran the command.
It works like a charm. It also works when trying to save information from the status command.
29
git log | clip 

copies to clipboard, then paste to a textfile.

(Especially if you have the problem of line-ending and thus by this method you can copy and paste it in a Microsoft word document(.docx); so there would be a new line for each commit!!!)

2 Comments

This seems to be the easiest way for Windows users to get around the Unix line-ending issue that writing straight to a file presents.
Oh that is so cool. I've been using Windows since the early '90s and I never realised you could pipe to clip board. I always used to redirect to a file then open that in notepad etc. This is a game-changer!
13
git log --before="2019-2-23" --pretty=format:'"%h","%an","%ae","%aD","%s",' --shortstat --no-merges | paste - - - > log.txt

Comments

12

You may use the > symbol send the output to a file. For example:

git log > commits.txt

Comments

10

It’s been long since this question was asked and by that time things have been evolved.

But, it is very interesting that all answers here are correct but not really addressing a post command error which is also very common. Let’s try to understand...

Who knew it was super easy. Run a simple command

git log -p --all > git_log.txt

but then I struck on an error

> warning: inexact rename detection was skipped due to too many files.
> warning: you may want to set your diff.renameLimit variable to at least 2951 and retry the command.

And we had a problem. The output file was half a gigabyte.

We just wanted the first half of 2018 which we are able to do with --after and --until:

git log --pretty=format:"%ad - %an: %s" --after="2018-01-01" --until="2018-06-30" > git_log.txt

This worked nicely for our purposes and was nice to know that we could change the format if need be.

1 Comment

The warning can be made to disappear with something like git config --global diff.renameLimit 3000.
4

You can make log report more clearly, by

(1) setting number of latest commits (for example, in below command, we get latest 50 commits, you can change it to 100, 500, etc.)

(2) display long commit in one line This command is display commit log in current branch:

git log --oneline -50 > log50_latest_commits.txt

(3) If you want display commit at all branch

git log --all --oneline -50 > log50_latest_commits.txt

Generated text file will stand at the current directory.

Reference: https://git-scm.com/docs/git-log

(tested on git version 2.11.0.windows.1 and it works on many other versions of Git)

Comments

3

In my case I found this was helpful

git log --after="2020-3-20" --pretty=format:'Author: %an %nDate/Time: %aD%nCommit: %s' | paste > log.txt

This will generate:

Author: your name

Date/Time: Commit Date time

Commit: Commit message

1 Comment

this just gave me a blank log.txt file even when I update the year
2

This is what worked for me with Git Bash on Windows 7:

git log > /C/Users/<user-name>/Desktop/git-log.txt

Replace <user-name> with your user name.

The file will be exported to your desktop from where you can read it.

Comments

1

I found this article that could help you. Article of how generate a changelog. One tool that you could use is changelog

npm install generate-changelog -g
changelog generate

It will create a well-formed CHANGELOG.md file.

1 Comment

not everyone has npm installed
1

It's simple. If you don't matter saving a file, you need to the open terminal

cd {your Git repository}
git log > your_file_name.txt

If you need a special directory, just write all paths on the right side, like this:

cd {your Git repository}
git log > /home/user/logs/your_file_name.txt

This directory, for example, you could use any one of your needs. I write a log like this just now.

This example show how to write a text in a file via Bash

4 Comments

Identical to existing answers.
Maybe, but i do this actions right now, and explain myself example
Good. But Stack Overflow is not your personal blog. It is an encyclopedia, and this entry is already written.
Thanks for your review. Just I want an answer for the question which not have answear since 2013 year.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.