CentOS7:Gitサーバー構築・設定

CentOS7でGitサーバーを構築し、Gitを使用する方法をまとめています。

Gitは専門用語が多く覚えるのに時間がかかるかもしれませんが、知っておくと便利かもしれませんね(・ω・)ノ

構成

今回は簡単に以下の構成を想定して作成する。

CentOS7(リモートリポジトリ) /var/example.git
Mac(ローカルリポジトリ) /Users/mac/git/example

また、例としてmasterブランチで作業を行っている。

目次へ

CentOS7設定

最新版のGitインストール

yumでインストール

Gitはyumで簡単にインストールできる。

    yum install git
    git --version
    > git version 1.8.3.1

yumでいれるとバージョンが少し古いため、最新版のGitをソースからコンパイル・インストールする。

最新のバージョンはGitHubで確認できる。

yumでインストールしたGitをアンインストール

    yum remove git

必要なパッケージをインストール

    yum install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel perl-ExtUtils-MakeMaker

ソースからコンパイルするため、その他に必要なパッケージをインストール

    yum install make gcc autoconf

インストールしたいバージョンをダウンロード

今回は「v2.15.1」をインストール

    wget https://github.com/git/git/archive/v2.15.1.tar.gz
    #wgetがなければ、「yum -y install wget」でインストール

ダウンロードが完了したら解凍

    tar -zxf v2.15.1.tar.gz

コンパイル・インストール

prefixを指定し、「/usr」へインストール

    cd git-2.15.1
    make configure
    ./configure --prefix=/usr
    make all
    make install
    git --version # バージョン確認
    > git version 2.15.1

Gitのインストールは完了したので、ドキュメントをインストール

ドキュメント類が不要であれば、初期設定

    yum install asciidoc xmlto
    yum install --enablerepo=epel docbook2X docbook-utils

このままではコンパイル時にエラーが出てしまうため、リンクを設定

    ln -s /bin/db2x_docbook2texi /bin/docbook2x-texi

リンクを作成したらドキュメントをコンパイル

    make doc info
    make all doc info
    make install install-doc install-html install-info
    man git # ヘルプを確認

Git専用のユーザー作成

リモートリポジトリへSSHを使用して接続する場合、Git関連以外の権限を与えたくないので専用のユーザーを作成

    useradd -s /usr/bin/git-shell gituser

リポジトリ作成

リモートリポジトリを任意の場所(今回は「/var/example.git」ディレクトリ)へ追加

    mkdir /var/example.git
    chmod 755 /var/example.git
    cd /var/example.git
    git init --bare
    Initialized empty Git repository in /var/example.git/

以上で、リモートリポジトリの準備は完了

目次へ

クライアント(Mac)設定

Gitインストール

インストールされているGitのバージョンを確認

    git --version
    git version 2.15.1 (Apple Git-101)

初期設定

ユーザー情報を設定

    git config --global user.name "Hoge Fuge"
    git config --global user.email "HogeFuge@example.com"

設定したユーザー情報を確認

    git config --global -l

リポジトリのクローン

Git管理用のフォルダを作成し、リモートリポジトリをクローン

    mkdir ~/git
    cd ~/git
    git clone ssh://gituser@example.com:/var/example.git #sshを使用してクローン

除外ファイルの設定

Git管理の対象から外したいファイルを設定

「.gitignore」ファイルを設置することでGit管理から指定したファイルを外せる

    cd example
    touch .gitignore  #特に意味はなく、下記のviコマンドで作成しても問題ない
    vi .gitignore
      # 「.DS_Store」や「._.DS_Store」を除外
      *.DS_Store

管理対象のステージング

ファイルを追加してGit管理の対象に追加

    echo hogehoge > test.txt
    git status #状態を確認
        On branch master
        Your branch is up to date with 'origin/master'.

        Untracked files:
        (use "git add <file>..." to include in what will be committed)

        .gitignore
        test.txt

    git add .gitignore test.txt  #インデックスへ登録
    git status #状態を確認
        On branch master
        Your branch is up to date with 'origin/master'.

        Changes to be committed:
        (use "git reset HEAD <file>..." to unstage)

        new file:   .gitignore
        new file:   test.txt

間違ってGit管理の対象に追加してしまった場合、取り消す

    git reset HEAD test.txt
    git status #状態を確認
        On branch master
        Your branch is up to date with 'origin/master'.

        Untracked files:
        (use "git add <file>..." to include in what will be committed)

        test.txt

ファイルのコミット

インデックスへ登録したら、ローカルリポジトリへ反映

    git commit -m "first commit"
        [master 1234567] first commit
        1 file changed, 1 insertion(+)
        create mode 100644 .gitignore
        create mode 100644 test.txt

間違ってコミットしてしまった場合、取り消す

    git rev-parse HEAD #HEADのハッシュ値の確認
        40eb17c4ed8d8d0060a934b6aba89e35f605d771

    git reset --hard コミットのハッシュ値 #コミットの取り消し
    # オプション:
    #   --hard 取り消しと同時にワークツリーの内容も書き換える
    #   --soft 取り消しのみ行いワークツリーの内容は書き換得ない
    #   HEADˆ 直前のコミットを指す。コミットのハッシュ値の代わりに使用可能

    # 打ち消し
    # コミット時点の状態にまで戻しコミットを行う(逆向きにコミットを行う)ことで履歴を残すことができる
    git revert コミットのハッシュ値

最新情報の取得

リモートリポジトリから最新の変更履歴情報を取得

    git fetch origin master
    git diff master origin/master #差分を確認

最新情報の反映

最新情報を取得したので、実際にワークツリーへ反映

    git merge origin/master

変更情報をリモートリポジトリへ反映

問題がなければリモートリポジトリへ変更情報を反映

    git push origin master

作成日:2017/04/09
更新日:2018/08/16