I would prefer instead:

  File msg = new File(gitDir, Constants.MERGE_MSG);
  try {
    return new String(IO.readFully(msg));
  } catch (FileNotFoundException notFound) {
    return null;
  }

It ensures the file will fit in memory, ensures we actually read all of it and didn't abort in the middle due to a short read, and ensures the file descriptor is closed at the end.  And, like the FileReader case you used, it uses the platform default encoding.