Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between author and committer in Git?

Tags:

git

github

I just came across the following commit on GitHub: https://github.com/felixge/node-formidable/commit/0a0b150668daa3c6f01626d2565b898e5da12392

How does one go about having multiple authors on the same commit like that?

like image 396
Chris Bolton Avatar asked Jul 20 '11 00:07

Chris Bolton


People also ask

What is committer in github?

The author is the person who originally wrote the code. The committer, on the other hand, is assumed to be the person who committed the code on behalf of the original author. This is important in Git because Git allows you to rewrite history, or apply patches on behalf of another person.

What does authored mean in git?

Authors are the people who wrote a specific piece of code - committers are the people who put these changes into the git "history". Normally both are the same (and doesn't change on merging, cloning, pushing or pulling).

What is git author name?

Git store the name and the email of two persons for each commit: the committer and the author. The difference between the two is that the author is the person who wrote the changes, while the committer is the person who uploaded them the repository.


2 Answers

That's not really two authors - that's an author and a committer. The two fields have different meanings. The author is the one who created the content, and the committer is the one who committed it. When you do a normal commit, you are both. (And both come with an associated email and timestamp.)

But they can become different in a few key ways:

  • git format-patch / git am - this pair lets you turn commits into patches, generally submitted by email, then have someone else apply them. You remain the author; the person who applies them is the committer. This is pretty definitely what happened on github there.

  • git commit --amend, git rebase, git filter-branch - These are all basically variants on history rewriting, ranging from single commit to some history of a branch to the entire history. They can potentially modify the committer information - in particular, they always rewrite the committer timestamp. The original author remains in place (in default modes of operation), and if the author is also the one doing the rewriting, their name and email stay, but the timestamp is naturally different.

like image 128
Cascabel Avatar answered Oct 07 '22 04:10

Cascabel


There aren't multiple authors associated with that commit (nor is it currently possible to assign multiple authors to a single commit). In this case, gliese1337 was the author, and felixge was the committer. Most likely, this occurred because gliese1337 submitted a pull request which was accepted and then committed by felixhe (the repository owner). That workflow's pretty common on GitHub. This is also helpful for instances when a project maintainer receives a patch via email, so the author of the patch itself still receives credit for the patch, even if he or she doesn't have commit access to the project.

A couple of related links:

Short Git Wiki section on author attribution
A feature request for multiple author functionality in Git core

like image 31
peterjmag Avatar answered Oct 07 '22 04:10

peterjmag