At the core level, git is character encoding agnostic.

 - 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.

 - The contents of the blob objects are uninterpreted sequence
   of bytes.  There is no encoding translation at the core
   level.

 - The commit log messages are uninterpreted sequence of non-NUL
   bytes.

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.

. 'git-commit' and 'git-commit-tree' 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 `.git/config` file, like this:
+
------------
[i18n]
	commitencoding = ISO-8859-1
------------
+
Commit objects created with the above setting record the value
of `i18n.commitencoding` in its `encoding` 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.

. 'git-log', 'git-show' and friends looks at the `encoding`
  header of a commit object, and tries to re-code the log
  message into UTF-8 unless otherwise specified.  You can
  specify the desired output encoding with
  `i18n.logoutputencoding` in `.git/config` file, like this:
+
------------
[i18n]
	logoutputencoding = ISO-8859-1
------------
+
If you do not have this configuration variable, the value of
`i18n.commitencoding` is used instead.

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.
