Help us understand the problem. What is going on with this article?

最新版の Git をインストールする

More than 1 year has passed since last update.

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

参考

noraworld
【急募】Rails のお仕事を募集しております。8 月末までを目処にご連絡をお待ちしております。
https://noraworld.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした