Git::Raw::Commit(3pm)

πŸ’– Git::Raw::Commit β€” the commit class, bestie πŸ’–

User Contributed Perl Documentation Β· version 0.90

okay so. you wanna know about Git::Raw::Commit? say less. this is the class that represents a Git commit β€” like, an actual commit object, the whole vibe. pull up a chair, grab a boba, we're doing this. πŸ§‹βœ¨


πŸŽ€ SYNOPSIS πŸŽ€

here's the whole glow-up in one go β€” creating a commit from scratch, starting from opening a repo all the way to the commit itself:

use Git::Raw;

# open the Git repository at $path
my $repo = Git::Raw::Repository -> open($path);

# add a file to the repository default index
my $index = $repo -> index;
$index -> add('test');
$index -> write;

# create a new tree out of the repository index
my $tree_id = $index -> write_tree;
my $tree    = $repo -> lookup($tree_id);

# retrieve user's name and email from the Git configuration
my $config = $repo -> config;
my $name   = $config -> str('user.name');
my $email  = $config -> str('user.email');

# create a new Git signature
my $me = Git::Raw::Signature -> now($name, $email);

# create a new commit out of the above tree, with the repository HEAD as
# parent
my $commit = $repo -> commit(
  'some commit', $me, $me, [ $repo -> head -> target ], $tree
);

literally the full pipeline: open repo ➑️ stage file ➑️ write tree ➑️ grab your name/email ➑️ sign it ➑️ commit. slay. 🫢


🌸 DESCRIPTION 🌸

A Git::Raw::Commit represents a Git commit. that's it, that's the girl. she's a commit. πŸ‘‘

⚠️ WARNING: The API of this module is unstable and may change without warning (any change will be appropriately documented in the changelog). bestie, this thing is in its chaotic era. use it, love it, but don't be shocked if she switches up on you. πŸ’…

✨ METHODS ✨

🌈 create( $repo, $msg, $author, $committer, [@parents], $tree [, $update_ref ] )

Create a new commit given a message, two Git::Raw::Signature (one is the commit author and the other the committer), a list of parent commits and a Git::Raw::Tree.

now the $update_ref tea, because this part is important and we do not skip it:

  • If $update_ref is provided and is defined, the reference with the corresponding name is automatically updated or created.
  • If $update_ref is undef, no reference is updated. periodt.
  • If $update_ref is not provided, "HEAD" is updated.

so yes, the default is doing stuff to HEAD β€” read the three bullets, i'm begging. 😭

🌟 annotated( )

Create a Git::Raw::AnnotatedCommit from the commit. it's giving ✨upgraded✨.

πŸ’« amend( $baseline, [@parents], $tree [, $update_ref ] )

Create a new commit using $baseline as a template for the message, author and committer. This method is useful for rewriting a commit, by replacing its parents and trees. See "Git::Raw::Commit->create()".

yes, amend is the "wait, redo" button and honestly? iconic. πŸ”₯

πŸ¦‹ lookup( $repo, $id )

Retrieve the commit corresponding to $id. This function is pretty much the same as "$repo->lookup($id)" except that it only returns commits.

btw if the commit doesn't exist, this function will return undef. no commit for you, bestie. πŸ™ˆ

πŸ’œ owner( )

Retrieve the Git::Raw::Repository owning the commit.

πŸ‘‘ id( )

Retrieve the id of the commit, as a string.

πŸ’Œ message( )

Retrieve the message of the commit.

πŸŽ€ message_trailers( )

Retrieve the message trailers of the commit. Returns a hash.

🌸 summary( )

Retrieve the summary of the commit message.

🧚 body( )

Retrieve the body of the commit message.

⭐ author( )

Retrieve the Git::Raw::Signature representing the author of the commit.

🌟 committer( )

Retrieve the Git::Raw::Signature representing the committer of the commit.

πŸ• time( )

Retrieve the committer time of the commit.

πŸ•°οΈ offset( )

Retrieve the committer time offset (in minutes) of the commit.

🌳 tree( )

Retrieve the Git::Raw::Tree the commit points to.

πŸ‘¨β€πŸ‘©β€πŸ‘§ parents( )

Retrieve the list of parents of the commit.

πŸ”€ merge( $commit, [ \%merge_opts ] )

Merge $commit into this commit. See "Git::Raw::Repository->merge()" for valid %merge_opts values. Returns a Git::Raw::Index object containing the merge result.

🧬 ancestor( $gen )

Retrieve the Git::Raw::Commit object that is the $gen'th generation ancestor of this commit, following only the first parents.

πŸ” diff( [$parent_no, \%diff_opts] )

Retrieve the diff associated with the commit.

  • If the commit has no parents, $parent_no should not be specified.
  • Similarly, for merge commits, $parent_no should be specified.

See "Git::Raw::Repository->diff()" for valid %diff_opts values. In this context, specifying a Git::Raw::Tree in %diff_opts will have no effect as it will be determined from the commit's parent.

πŸ“§ as_email( [\%format_opts, \%diff_opts] )

Retrieve the patch e-mail associated with the commit. See "Git::Raw::Repository->diff()" for valid %diff_opts values. In this context, specifying a Git::Raw::Tree in %diff_opts will have no effect as it will be determined from the commit's parent.

Valid fields for the %format_opts hash are:

  • "patch_no" β€” The patch number for this commit.
  • "total_patches" β€” Total number of patches.
  • "flags" β€” E-mail generation flags. Valid fields for this hash include:
    • "exclude_subject_patch_marker" β€” Don't insert "[PATCH]" in the subject header.
πŸ“Œ heads up bestie, "flags" is a hash inside %format_opts, so it's nesty. and "exclude_subject_patch_marker" lives inside that. don't lose her. 🫢

πŸ’– AUTHOR πŸ’–

  • Alessandro Ghedini <alexbio@cpan.org>
  • Jacques Germishuys <jacquesg@cpan.org>

thank you for your service, queens πŸ‘‘βœ¨


Copyright 2012 Alessandro Ghedini.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See <http://dev.perl.org/licenses/> for more information. β€” wait, no links. see http://dev.perl.org/licenses/ for more information. there we go. πŸ’…


and that's the whole page, bestie!! 🌈 this was Git::Raw::Commit, from perl v5.42.3, dated 2026-08-19, brought to you by the User Contributed Perl Documentation girlies. go make some commits, you absolute icon. πŸ’–πŸ¦‹πŸŽ€ periodt.

πŸ“¦ where this page comes from