TL;DR

Ubuntu

Ubuntu
$ sudo apt -y remove git
$ sudo apt -y install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev autoconf asciidoc xmlto docbook2x make gcc
$ wget https://github.com/git/git/archive/v2.15.1.tar.gz
$ tar -zxf v2.15.1.tar.gz
$ cd git-2.15.1
$ make configure
$ ./configure --prefix=/usr
$ make all doc info
$ sudo make install install-doc install-html install-info
$ git --version

CentOS

CentOS
$ sudo yum -y remove git
$ sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel autoconf asciidoc xmlto docbook2X make gcc
$ sudo ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi
$ wget https://github.com/git/git/archive/v2.15.1.tar.gz
$ tar -zxf v2.15.1.tar.gz
$ cd git-2.15.1
$ make configure
$ ./configure --prefix=/usr
$ make all doc info
$ sudo make install install-doc install-html install-info
$ git --version

※ 最新の Git のバージョンは、Releases · git/git を参照のこと

パッケージマネージャーの Git は古いことが多い

aptyum などの Linux のパッケージマネージャーでインストールした Git は、バージョンが古いことが多いです。

Ubuntu16.04
$ date
Tue Dec  5 21:40:00 JST 2017  # 2017 年 12 月 5 日現在
$ sudo apt -y update
$ sudo apt -y upgrade
$ sudo apt -y install git
$ git --version
git version 2.7.4
CentOS7
$ date
Tue Dec  5 21:40:00 JST 2017  # 2017 年 12 月 5 日現在
$ sudo yum -y update
$ sudo yum -y install git
$ git --version
git version 1.8.3.1

特に yum でインストールした Git は古いです。

Git のバージョンが古くても最低限のことは問題ないのですが、新しいバージョンで追加された機能を使いたいときには、やはり最新版をインストールしておきたいです。

たとえば、Git 2.8 以降では、user.useConfigOnly という設定が追加され、これを有効にすることで、ユーザ名やメールアドレスを設定していないときに、環境変数を使用して勝手にユーザ情報を参照してしまうことを防ぐことができます。

参考: リポジトリごとに user.name や user.email の設定を強制する

このような便利機能があるのですが、パッケージマネージャーからインストールした Git だと、古くて対応していません。user.useConfigOnly を設定しているから、うっかりユーザ名とメールアドレスを設定し忘れても大丈夫、と思っていたけど、実は、Git のバージョンが古くて環境変数のユーザ情報を参照してしまっていた…なんてことにもなりかねないです。

以降では、最新版を Git を、パッケージマネージャーからではなく、ソースからビルドしてインストールする方法について説明します。

既存の Git をアンインストール

既にパッケージマネージャーで Git をインストールしていた場合は、アンインストールします。

Ubuntu の場合

Ubuntu
$ sudo apt -y remove git

CentOS の場合

CentOS
$ sudo yum -y remove git

必要なライブラリをインストール

まずは必要なライブラリをインストールします。

Ubuntu の場合

Ubuntu
$ sudo apt -y install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev autoconf asciidoc xmlto docbook2x make gcc

CentOS の場合

CentOS
$ sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel autoconf asciidoc xmlto docbook2X make gcc
$ sudo ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi

ソースコードをダウンロード

Git のソースコードをダウンロードします。以下の GitHub のページにアクセスします。

Releases · git/git

git_releases.png

最新版の Tarball のダウンロードリンクをコピーします。上記の画像の例では、v2.15.1 が最新版なので、v2.15.1 の tar.gz のリンクをコピーします。以降の説明では、v2.15.1 が最新版だと仮定します。

Tarball をダウンロードします。

$ wget https://github.com/git/git/archive/v2.15.1.tar.gz

カレントディレクトリに v2.15.1.tar.gz がダウンロードされます。

ビルドしてインストール

先ほどダウンロードした Tarball を展開します。

$ tar -zxf v2.15.1.tar.gz

展開されたディレクトリに移動します。

$ cd git-2.15.1

あとは、ビルドしてインストールすれば完了です。

$ make configure
$ ./configure --prefix=/usr
$ make all doc info
$ sudo make install install-doc install-html install-info

バージョンを確認して、最新の Git のバージョンが表示されたら成功です。

$ git --version
git version 2.15.1

参考

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.