<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" | |
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> | |
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | |
<meta name="generator" content="AsciiDoc 8.2.5" /> | |
<style type="text/css"> | |
/* Debug borders */ | |
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { | |
/* | |
border: 1px solid red; | |
*/ | |
} | |
body { | |
margin: 1em 5% 1em 5%; | |
} | |
a { | |
color: blue; | |
text-decoration: underline; | |
} | |
a:visited { | |
color: fuchsia; | |
} | |
em { | |
font-style: italic; | |
} | |
strong { | |
font-weight: bold; | |
} | |
tt { | |
color: navy; | |
} | |
h1, h2, h3, h4, h5, h6 { | |
color: #527bbd; | |
font-family: sans-serif; | |
margin-top: 1.2em; | |
margin-bottom: 0.5em; | |
line-height: 1.3; | |
} | |
h1, h2, h3 { | |
border-bottom: 2px solid silver; | |
} | |
h2 { | |
padding-top: 0.5em; | |
} | |
h3 { | |
float: left; | |
} | |
h3 + * { | |
clear: left; | |
} | |
div.sectionbody { | |
font-family: serif; | |
margin-left: 0; | |
} | |
hr { | |
border: 1px solid silver; | |
} | |
p { | |
margin-top: 0.5em; | |
margin-bottom: 0.5em; | |
} | |
pre { | |
padding: 0; | |
margin: 0; | |
} | |
span#author { | |
color: #527bbd; | |
font-family: sans-serif; | |
font-weight: bold; | |
font-size: 1.1em; | |
} | |
span#email { | |
} | |
span#revision { | |
font-family: sans-serif; | |
} | |
div#footer { | |
font-family: sans-serif; | |
font-size: small; | |
border-top: 2px solid silver; | |
padding-top: 0.5em; | |
margin-top: 4.0em; | |
} | |
div#footer-text { | |
float: left; | |
padding-bottom: 0.5em; | |
} | |
div#footer-badges { | |
float: right; | |
padding-bottom: 0.5em; | |
} | |
div#preamble, | |
div.tableblock, div.imageblock, div.exampleblock, div.verseblock, | |
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, | |
div.admonitionblock { | |
margin-right: 10%; | |
margin-top: 1.5em; | |
margin-bottom: 1.5em; | |
} | |
div.admonitionblock { | |
margin-top: 2.5em; | |
margin-bottom: 2.5em; | |
} | |
div.content { /* Block element content. */ | |
padding: 0; | |
} | |
/* Block element titles. */ | |
div.title, caption.title { | |
font-family: sans-serif; | |
font-weight: bold; | |
text-align: left; | |
margin-top: 1.0em; | |
margin-bottom: 0.5em; | |
} | |
div.title + * { | |
margin-top: 0; | |
} | |
td div.title:first-child { | |
margin-top: 0.0em; | |
} | |
div.content div.title:first-child { | |
margin-top: 0.0em; | |
} | |
div.content + div.title { | |
margin-top: 0.0em; | |
} | |
div.sidebarblock > div.content { | |
background: #ffffee; | |
border: 1px solid silver; | |
padding: 0.5em; | |
} | |
div.listingblock { | |
margin-right: 0%; | |
} | |
div.listingblock > div.content { | |
border: 1px solid silver; | |
background: #f4f4f4; | |
padding: 0.5em; | |
} | |
div.quoteblock > div.content { | |
padding-left: 2.0em; | |
} | |
div.attribution { | |
text-align: right; | |
} | |
div.verseblock + div.attribution { | |
text-align: left; | |
} | |
div.admonitionblock .icon { | |
vertical-align: top; | |
font-size: 1.1em; | |
font-weight: bold; | |
text-decoration: underline; | |
color: #527bbd; | |
padding-right: 0.5em; | |
} | |
div.admonitionblock td.content { | |
padding-left: 0.5em; | |
border-left: 2px solid silver; | |
} | |
div.exampleblock > div.content { | |
border-left: 2px solid silver; | |
padding: 0.5em; | |
} | |
div.verseblock div.content { | |
white-space: pre; | |
} | |
div.imageblock div.content { padding-left: 0; } | |
div.imageblock img { border: 1px solid silver; } | |
span.image img { border-style: none; } | |
dl { | |
margin-top: 0.8em; | |
margin-bottom: 0.8em; | |
} | |
dt { | |
margin-top: 0.5em; | |
margin-bottom: 0; | |
font-style: italic; | |
} | |
dd > *:first-child { | |
margin-top: 0; | |
} | |
ul, ol { | |
list-style-position: outside; | |
} | |
div.olist2 ol { | |
list-style-type: lower-alpha; | |
} | |
div.tableblock > table { | |
border: 3px solid #527bbd; | |
} | |
thead { | |
font-family: sans-serif; | |
font-weight: bold; | |
} | |
tfoot { | |
font-weight: bold; | |
} | |
div.hlist { | |
margin-top: 0.8em; | |
margin-bottom: 0.8em; | |
} | |
div.hlist td { | |
padding-bottom: 5px; | |
} | |
td.hlist1 { | |
vertical-align: top; | |
font-style: italic; | |
padding-right: 0.8em; | |
} | |
td.hlist2 { | |
vertical-align: top; | |
} | |
@media print { | |
div#footer-badges { display: none; } | |
} | |
div#toctitle { | |
color: #527bbd; | |
font-family: sans-serif; | |
font-size: 1.1em; | |
font-weight: bold; | |
margin-top: 1.0em; | |
margin-bottom: 0.1em; | |
} | |
div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { | |
margin-top: 0; | |
margin-bottom: 0; | |
} | |
div.toclevel2 { | |
margin-left: 2em; | |
font-size: 0.9em; | |
} | |
div.toclevel3 { | |
margin-left: 4em; | |
font-size: 0.9em; | |
} | |
div.toclevel4 { | |
margin-left: 6em; | |
font-size: 0.9em; | |
} | |
include1::./stylesheets/xhtml11-manpage.css[] | |
/* Workarounds for IE6's broken and incomplete CSS2. */ | |
div.sidebar-content { | |
background: #ffffee; | |
border: 1px solid silver; | |
padding: 0.5em; | |
} | |
div.sidebar-title, div.image-title { | |
font-family: sans-serif; | |
font-weight: bold; | |
margin-top: 0.0em; | |
margin-bottom: 0.5em; | |
} | |
div.listingblock div.content { | |
border: 1px solid silver; | |
background: #f4f4f4; | |
padding: 0.5em; | |
} | |
div.quoteblock-content { | |
padding-left: 2.0em; | |
} | |
div.exampleblock-content { | |
border-left: 2px solid silver; | |
padding-left: 0.5em; | |
} | |
/* IE6 sets dynamically generated links as visited. */ | |
div#toc a:visited { color: blue; } | |
</style> | |
<title>git-commit(1)</title> | |
</head> | |
<body> | |
<div id="header"> | |
<h1> | |
git-commit(1) Manual Page | |
</h1> | |
<h2>NAME</h2> | |
<div class="sectionbody"> | |
<p>git-commit - | |
Record changes to the repository | |
</p> | |
</div> | |
</div> | |
<h2>SYNOPSIS</h2> | |
<div class="sectionbody"> | |
<div class="verseblock"> | |
<div class="content"><em>git commit</em> [-a | --interactive] [-s] [-v] [-u<mode>] [--amend] [--dry-run] | |
[(-c | -C) <commit>] [-F <file> | -m <msg>] [--dry-run] | |
[--allow-empty] [--no-verify] [-e] [--author=<author>] | |
[--cleanup=<mode>] [--] [[-i | -o ]<file>…]</div></div> | |
</div> | |
<h2 id="_description">DESCRIPTION</h2> | |
<div class="sectionbody"> | |
<div class="para"><p>Stores the current contents of the index in a new commit along | |
with a log message from the user describing the changes.</p></div> | |
<div class="para"><p>The content to be added can be specified in several ways:</p></div> | |
<div class="olist"><ol> | |
<li> | |
<p> | |
by using <em>git-add</em> to incrementally "add" changes to the | |
index before using the <em>commit</em> command (Note: even modified | |
files must be "added"); | |
</p> | |
</li> | |
<li> | |
<p> | |
by using <em>git-rm</em> to remove files from the working tree | |
and the index, again before using the <em>commit</em> command; | |
</p> | |
</li> | |
<li> | |
<p> | |
by listing files as arguments to the <em>commit</em> command, in which | |
case the commit will ignore changes staged in the index, and instead | |
record the current content of the listed files (which must already | |
be known to git); | |
</p> | |
</li> | |
<li> | |
<p> | |
by using the -a switch with the <em>commit</em> command to automatically | |
"add" changes from all known files (i.e. all files that are already | |
listed in the index) and to automatically "rm" files in the index | |
that have been removed from the working tree, and then perform the | |
actual commit; | |
</p> | |
</li> | |
<li> | |
<p> | |
by using the --interactive switch with the <em>commit</em> command to decide one | |
by one which files should be part of the commit, before finalizing the | |
operation. Currently, this is done by invoking <em>git-add --interactive</em>. | |
</p> | |
</li> | |
</ol></div> | |
<div class="para"><p>The <tt>--dry-run</tt> option can be used to obtain a | |
summary of what is included by any of the above for the next | |
commit by giving the same set of parameters (options and paths).</p></div> | |
<div class="para"><p>If you make a commit and then find a mistake immediately after | |
that, you can recover from it with <em>git-reset</em>.</p></div> | |
</div> | |
<h2 id="_options">OPTIONS</h2> | |
<div class="sectionbody"> | |
<div class="vlist"><dl> | |
<dt> | |
-a | |
</dt> | |
<dt> | |
--all | |
</dt> | |
<dd> | |
<p> | |
Tell the command to automatically stage files that have | |
been modified and deleted, but new files you have not | |
told git about are not affected. | |
</p> | |
</dd> | |
<dt> | |
-C <commit> | |
</dt> | |
<dt> | |
--reuse-message=<commit> | |
</dt> | |
<dd> | |
<p> | |
Take an existing commit object, and reuse the log message | |
and the authorship information (including the timestamp) | |
when creating the commit. | |
</p> | |
</dd> | |
<dt> | |
-c <commit> | |
</dt> | |
<dt> | |
--reedit-message=<commit> | |
</dt> | |
<dd> | |
<p> | |
Like <em>-C</em>, but with <em>-c</em> the editor is invoked, so that | |
the user can further edit the commit message. | |
</p> | |
</dd> | |
<dt> | |
--dry-run | |
</dt> | |
<dd> | |
<p> | |
Do not actually make a commit, but show the list of paths | |
with updates in the index, paths with changes in the work tree, | |
and paths that are untracked, similar to the one that is given | |
in the commit log editor. | |
</p> | |
</dd> | |
<dt> | |
-F <file> | |
</dt> | |
<dt> | |
--file=<file> | |
</dt> | |
<dd> | |
<p> | |
Take the commit message from the given file. Use <em>-</em> to | |
read the message from the standard input. | |
</p> | |
</dd> | |
<dt> | |
--author=<author> | |
</dt> | |
<dd> | |
<p> | |
Override the author name used in the commit. You can use the | |
standard <tt>A U Thor <author@example.com></tt> format. Otherwise, | |
an existing commit that matches the given string and its author | |
name is used. | |
</p> | |
</dd> | |
<dt> | |
-m <msg> | |
</dt> | |
<dt> | |
--message=<msg> | |
</dt> | |
<dd> | |
<p> | |
Use the given <msg> as the commit message. | |
</p> | |
</dd> | |
<dt> | |
-t <file> | |
</dt> | |
<dt> | |
--template=<file> | |
</dt> | |
<dd> | |
<p> | |
Use the contents of the given file as the initial version | |
of the commit message. The editor is invoked and you can | |
make subsequent changes. If a message is specified using | |
the <tt>-m</tt> or <tt>-F</tt> options, this option has no effect. This | |
overrides the <tt>commit.template</tt> configuration variable. | |
</p> | |
</dd> | |
<dt> | |
-s | |
</dt> | |
<dt> | |
--signoff | |
</dt> | |
<dd> | |
<p> | |
Add Signed-off-by line by the committer at the end of the commit | |
log message. | |
</p> | |
</dd> | |
<dt> | |
-n | |
</dt> | |
<dt> | |
--no-verify | |
</dt> | |
<dd> | |
<p> | |
This option bypasses the pre-commit and commit-msg hooks. | |
See also <a href="githooks.html">githooks(5)</a>. | |
</p> | |
</dd> | |
<dt> | |
--allow-empty | |
</dt> | |
<dd> | |
<p> | |
Usually recording a commit that has the exact same tree as its | |
sole parent commit is a mistake, and the command prevents you | |
from making such a commit. This option bypasses the safety, and | |
is primarily for use by foreign scm interface scripts. | |
</p> | |
</dd> | |
<dt> | |
--cleanup=<mode> | |
</dt> | |
<dd> | |
<p> | |
This option sets how the commit message is cleaned up. | |
The <em><mode></em> can be one of <em>verbatim</em>, <em>whitespace</em>, <em>strip</em>, | |
and <em>default</em>. The <em>default</em> mode will strip leading and | |
trailing empty lines and #commentary from the commit message | |
only if the message is to be edited. Otherwise only whitespace | |
removed. The <em>verbatim</em> mode does not change message at all, | |
<em>whitespace</em> removes just leading/trailing whitespace lines | |
and <em>strip</em> removes both whitespace and commentary. | |
</p> | |
</dd> | |
<dt> | |
-e | |
</dt> | |
<dt> | |
--edit | |
</dt> | |
<dd> | |
<p> | |
The message taken from file with <tt>-F</tt>, command line with | |
<tt>-m</tt>, and from file with <tt>-C</tt> are usually used as the | |
commit log message unmodified. This option lets you | |
further edit the message taken from these sources. | |
</p> | |
</dd> | |
<dt> | |
--amend | |
</dt> | |
<dd> | |
<p> | |
Used to amend the tip of the current branch. Prepare the tree | |
object you would want to replace the latest commit as usual | |
(this includes the usual -i/-o and explicit paths), and the | |
commit log editor is seeded with the commit message from the | |
tip of the current branch. The commit you create replaces the | |
current tip — if it was a merge, it will have the parents of | |
the current tip as parents — so the current top commit is | |
discarded. | |
</p> | |
<div class="para"><p>It is a rough equivalent for:</p></div> | |
<div class="listingblock"> | |
<div class="content"> | |
<pre><tt> $ git reset --soft HEAD^ | |
$ ... do something else to come up with the right tree ... | |
$ git commit -c ORIG_HEAD | |
</tt></pre> | |
</div></div> | |
<div class="para"><p>but can be used to amend a merge commit.</p></div> | |
<div class="para"><p>You should understand the implications of rewriting history if you | |
amend a commit that has already been published. (See the "RECOVERING | |
FROM UPSTREAM REBASE" section in <a href="git-rebase.html">git-rebase(1)</a>.)</p></div> | |
</dd> | |
<dt> | |
-i | |
</dt> | |
<dt> | |
--include | |
</dt> | |
<dd> | |
<p> | |
Before making a commit out of staged contents so far, | |
stage the contents of paths given on the command line | |
as well. This is usually not what you want unless you | |
are concluding a conflicted merge. | |
</p> | |
</dd> | |
<dt> | |
-o | |
</dt> | |
<dt> | |
--only | |
</dt> | |
<dd> | |
<p> | |
Make a commit only from the paths specified on the | |
command line, disregarding any contents that have been | |
staged so far. This is the default mode of operation of | |
<em>git-commit</em> if any paths are given on the command line, | |
in which case this option can be omitted. | |
If this option is specified together with <em>--amend</em>, then | |
no paths need to be specified, which can be used to amend | |
the last commit without committing changes that have | |
already been staged. | |
</p> | |
</dd> | |
<dt> | |
-u[<mode>] | |
</dt> | |
<dt> | |
--untracked-files[=<mode>] | |
</dt> | |
<dd> | |
<p> | |
Show untracked files (Default: <em>all</em>). | |
</p> | |
<div class="para"><p>The mode parameter is optional, and is used to specify | |
the handling of untracked files. The possible options are:</p></div> | |
<div class="ilist"><ul> | |
<li> | |
<p> | |
<em>no</em> - Show no untracked files | |
</p> | |
</li> | |
<li> | |
<p> | |
<em>normal</em> - Shows untracked files and directories | |
</p> | |
</li> | |
<li> | |
<p> | |
<em>all</em> - Also shows individual files in untracked directories. | |
</p> | |
</li> | |
</ul></div> | |
<div class="para"><p>See <a href="git-config.html">git-config(1)</a> for configuration variable | |
used to change the default for when the option is not | |
specified.</p></div> | |
</dd> | |
<dt> | |
-v | |
</dt> | |
<dt> | |
--verbose | |
</dt> | |
<dd> | |
<p> | |
Show unified diff between the HEAD commit and what | |
would be committed at the bottom of the commit message | |
template. Note that this diff output doesn't have its | |
lines prefixed with <em>#</em>. | |
</p> | |
</dd> | |
<dt> | |
-q | |
</dt> | |
<dt> | |
--quiet | |
</dt> | |
<dd> | |
<p> | |
Suppress commit summary message. | |
</p> | |
</dd> | |
<dt> | |
--dry-run | |
</dt> | |
<dd> | |
<p> | |
Do not create a commit, but show a list of paths that are | |
to be committed, paths with local changes that will be left | |
uncommitted and paths that are untracked. | |
</p> | |
</dd> | |
<dt> | |
-- | |
</dt> | |
<dd> | |
<p> | |
Do not interpret any more arguments as options. | |
</p> | |
</dd> | |
<dt> | |
<file>… | |
</dt> | |
<dd> | |
<p> | |
When files are given on the command line, the command | |
commits the contents of the named files, without | |
recording the changes already staged. The contents of | |
these files are also staged for the next commit on top | |
of what have been staged before. | |
</p> | |
</dd> | |
</dl></div> | |
</div> | |
<h2 id="_examples">EXAMPLES</h2> | |
<div class="sectionbody"> | |
<div class="para"><p>When recording your own work, the contents of modified files in | |
your working tree are temporarily stored to a staging area | |
called the "index" with <em>git-add</em>. A file can be | |
reverted back, only in the index but not in the working tree, | |
to that of the last commit with <tt>git reset HEAD — <file></tt>, | |
which effectively reverts <em>git-add</em> and prevents the changes to | |
this file from participating in the next commit. After building | |
the state to be committed incrementally with these commands, | |
<tt>git commit</tt> (without any pathname parameter) is used to record what | |
has been staged so far. This is the most basic form of the | |
command. An example:</p></div> | |
<div class="listingblock"> | |
<div class="content"> | |
<pre><tt>$ edit hello.c | |
$ git rm goodbye.c | |
$ git add hello.c | |
$ git commit</tt></pre> | |
</div></div> | |
<div class="para"><p>Instead of staging files after each individual change, you can | |
tell <tt>git commit</tt> to notice the changes to the files whose | |
contents are tracked in | |
your working tree and do corresponding <tt>git add</tt> and <tt>git rm</tt> | |
for you. That is, this example does the same as the earlier | |
example if there is no other change in your working tree:</p></div> | |
<div class="listingblock"> | |
<div class="content"> | |
<pre><tt>$ edit hello.c | |
$ rm goodbye.c | |
$ git commit -a</tt></pre> | |
</div></div> | |
<div class="para"><p>The command <tt>git commit -a</tt> first looks at your working tree, | |
notices that you have modified hello.c and removed goodbye.c, | |
and performs necessary <tt>git add</tt> and <tt>git rm</tt> for you.</p></div> | |
<div class="para"><p>After staging changes to many files, you can alter the order the | |
changes are recorded in, by giving pathnames to <tt>git commit</tt>. | |
When pathnames are given, the command makes a commit that | |
only records the changes made to the named paths:</p></div> | |
<div class="listingblock"> | |
<div class="content"> | |
<pre><tt>$ edit hello.c hello.h | |
$ git add hello.c hello.h | |
$ edit Makefile | |
$ git commit Makefile</tt></pre> | |
</div></div> | |
<div class="para"><p>This makes a commit that records the modification to <tt>Makefile</tt>. | |
The changes staged for <tt>hello.c</tt> and <tt>hello.h</tt> are not included | |
in the resulting commit. However, their changes are not lost — | |
they are still staged and merely held back. After the above | |
sequence, if you do:</p></div> | |
<div class="listingblock"> | |
<div class="content"> | |
<pre><tt>$ git commit</tt></pre> | |
</div></div> | |
<div class="para"><p>this second commit would record the changes to <tt>hello.c</tt> and | |
<tt>hello.h</tt> as expected.</p></div> | |
<div class="para"><p>After a merge (initiated by <em>git-merge</em> or <em>git-pull</em>) stops | |
because of conflicts, cleanly merged | |
paths are already staged to be committed for you, and paths that | |
conflicted are left in unmerged state. You would have to first | |
check which paths are conflicting with <em>git-status</em> | |
and after fixing them manually in your working tree, you would | |
stage the result as usual with <em>git-add</em>:</p></div> | |
<div class="listingblock"> | |
<div class="content"> | |
<pre><tt>$ git status | grep unmerged | |
unmerged: hello.c | |
$ edit hello.c | |
$ git add hello.c</tt></pre> | |
</div></div> | |
<div class="para"><p>After resolving conflicts and staging the result, <tt>git ls-files -u</tt> | |
would stop mentioning the conflicted path. When you are done, | |
run <tt>git commit</tt> to finally record the merge:</p></div> | |
<div class="listingblock"> | |
<div class="content"> | |
<pre><tt>$ git commit</tt></pre> | |
</div></div> | |
<div class="para"><p>As with the case to record your own changes, you can use <tt>-a</tt> | |
option to save typing. One difference is that during a merge | |
resolution, you cannot use <tt>git commit</tt> with pathnames to | |
alter the order the changes are committed, because the merge | |
should be recorded as a single commit. In fact, the command | |
refuses to run when given pathnames (but see <tt>-i</tt> option).</p></div> | |
</div> | |
<h2 id="_discussion">DISCUSSION</h2> | |
<div class="sectionbody"> | |
<div class="para"><p>Though not required, it's a good idea to begin the commit message | |
with a single short (less than 50 character) line summarizing the | |
change, followed by a blank line and then a more thorough description. | |
Tools that turn commits into email, for example, use the first line | |
on the Subject: line and the rest of the commit in the body.</p></div> | |
<div class="para"><p>At the core level, git is character encoding agnostic.</p></div> | |
<div class="ilist"><ul> | |
<li> | |
<p> | |
The pathnames recorded in the index and in the tree objects | |
are treated as uninterpreted sequences of non-NUL bytes. | |
What readdir(2) returns are what are recorded and compared | |
with the data git keeps track of, which in turn are expected | |
to be what lstat(2) and creat(2) accepts. There is no such | |
thing as pathname encoding translation. | |
</p> | |
</li> | |
<li> | |
<p> | |
The contents of the blob objects are uninterpreted sequences | |
of bytes. There is no encoding translation at the core | |
level. | |
</p> | |
</li> | |
<li> | |
<p> | |
The commit log messages are uninterpreted sequences of non-NUL | |
bytes. | |
</p> | |
</li> | |
</ul></div> | |
<div class="para"><p>Although we encourage that the commit log messages are encoded | |
in UTF-8, both the core and git Porcelain are designed not to | |
force UTF-8 on projects. If all participants of a particular | |
project find it more convenient to use legacy encodings, git | |
does not forbid it. However, there are a few things to keep in | |
mind.</p></div> | |
<div class="olist"><ol> | |
<li> | |
<p> | |
<em>git-commit</em> and <em>git-commit-tree</em> issues | |
a warning if the commit log message given to it does not look | |
like a valid UTF-8 string, unless you explicitly say your | |
project uses a legacy encoding. The way to say this is to | |
have i18n.commitencoding in <tt>.git/config</tt> file, like this: | |
</p> | |
<div class="listingblock"> | |
<div class="content"> | |
<pre><tt>[i18n] | |
commitencoding = ISO-8859-1</tt></pre> | |
</div></div> | |
<div class="para"><p>Commit objects created with the above setting record the value | |
of <tt>i18n.commitencoding</tt> in its <tt>encoding</tt> header. This is to | |
help other people who look at them later. Lack of this header | |
implies that the commit log message is encoded in UTF-8.</p></div> | |
</li> | |
<li> | |
<p> | |
<em>git-log</em>, <em>git-show</em>, <em>git-blame</em> and friends look at the | |
<tt>encoding</tt> header of a commit object, and try to re-code the | |
log message into UTF-8 unless otherwise specified. You can | |
specify the desired output encoding with | |
<tt>i18n.logoutputencoding</tt> in <tt>.git/config</tt> file, like this: | |
</p> | |
<div class="listingblock"> | |
<div class="content"> | |
<pre><tt>[i18n] | |
logoutputencoding = ISO-8859-1</tt></pre> | |
</div></div> | |
<div class="para"><p>If you do not have this configuration variable, the value of | |
<tt>i18n.commitencoding</tt> is used instead.</p></div> | |
</li> | |
</ol></div> | |
<div class="para"><p>Note that we deliberately chose not to re-code the commit log | |
message when a commit is made to force UTF-8 at the commit | |
object level, because re-coding to UTF-8 is not necessarily a | |
reversible operation.</p></div> | |
</div> | |
<h2 id="_environment_and_configuration_variables">ENVIRONMENT AND CONFIGURATION VARIABLES</h2> | |
<div class="sectionbody"> | |
<div class="para"><p>The editor used to edit the commit log message will be chosen from the | |
GIT_EDITOR environment variable, the core.editor configuration variable, the | |
VISUAL environment variable, or the EDITOR environment variable (in that | |
order).</p></div> | |
</div> | |
<h2 id="_hooks">HOOKS</h2> | |
<div class="sectionbody"> | |
<div class="para"><p>This command can run <tt>commit-msg</tt>, <tt>prepare-commit-msg</tt>, <tt>pre-commit</tt>, | |
and <tt>post-commit</tt> hooks. See <a href="githooks.html">githooks(5)</a> for more | |
information.</p></div> | |
</div> | |
<h2 id="_see_also">SEE ALSO</h2> | |
<div class="sectionbody"> | |
<div class="para"><p><a href="git-add.html">git-add(1)</a>, | |
<a href="git-rm.html">git-rm(1)</a>, | |
<a href="git-mv.html">git-mv(1)</a>, | |
<a href="git-merge.html">git-merge(1)</a>, | |
<a href="git-commit-tree.html">git-commit-tree(1)</a></p></div> | |
</div> | |
<h2 id="_author">Author</h2> | |
<div class="sectionbody"> | |
<div class="para"><p>Written by Linus Torvalds <torvalds@osdl.org> and | |
Junio C Hamano <gitster@pobox.com></p></div> | |
</div> | |
<h2 id="_git">GIT</h2> | |
<div class="sectionbody"> | |
<div class="para"><p>Part of the <a href="git.html">git(1)</a> suite</p></div> | |
</div> | |
<div id="footer"> | |
<div id="footer-text"> | |
Last updated 2009-08-29 04:23:54 UTC | |
</div> | |
</div> | |
</body> | |
</html> |