はじめに
この記事は新人エンジニアの時に知っておきたかったことに含まれます。
他の記事は上記のリンクから遷移可能です。あわせてご覧ください。
Gitとは?
プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムです。
Wikiより
リモートサーバに置かれた中心となるリポジトリ(ソースコード)を手元のローカル環境にコピーします。
普段、作業する際にはローカル環境のリポジトリに変更を加えます。
そして、ローカル環境のリポジトリに加えられた変更をリモートサーバに置かれたリポジトリに反映します。
なぜGitを使うのか?
他の作業者に影響を与えることなくソースに変更を加えられる
リモートサーバから手元のローカル環境にリポジトリ(ソースコード)をコピーし、
ローカル環境のリポジトリに変更を加えていくため、他の人と修正作業が競合することはありません。
ただし、ローカル環境で加えた変更をリモートサーバのリポジトリに反映する際には、他の人が加えた変更と競合する可能性はあります。
それを解決するためにmergeやrebaseをするのですが、Gitを調べていく中で理解することになるはずなので、心配は要りません。
過去に誰がどのような変更をソースコードに加えたのかが分かる
Gitでは過去に誰がどのような変更をソースコードに加えたのかが蓄積されます。
ソースコードの記述の意図がよくわからない時には過去の変更履歴を辿ることで意図を理解することができる場合があります。
また、バグが埋め込まれている場合、いつそのバグが埋め込まれたのかをトラッキングすることも可能です。
その他の理由
Gitを使う理由に関してはいろんな方がいろんな主張をされているかと思います。
実際にGitを使いながら、気になった時にでも調べてみてください。
インストール
~/local/srcにソースを配置し、~/local/binにGitを配置します。
依存ツールのインストール
CentOSの場合、以下のコマンドで依存ツールをインストールします。
$ yum install -y curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel
インストール
$ mkdir -p ~/local/src
$ cd ~/local/src
$ wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.7.0.tar.gz
$ tar zxvf git-2.7.0.tar.gz
$ cd git-2.7.0
$ ./configure --prefix=$HOME/local
$ make all
$ make install
PATHを通す
.zshrcや.bashrcなどのシェルの設定ファイルに以下の設定を追加します。
export PATH=$HOME/local/bin:$PATH
設定ファイル
$ ~/.gitconfig
操作
基本的によく使うのはここら辺のコマンドだろうと思います。
よく使うコマンドに関しては、設定ファイルにaliasを設定することで、毎回入力する際の手間を減らすことに繋がるはずです。
ぜひ、aliasを設定してみてください。
$ git add
$ git checkout
$ git commit
$ git status
$ git branch
$ git pull
$ git fetch
$ git push
$ git merge
$ git rebase
$ git stash
$ git cherry-pick
$ git reflog
$ git log
$ git mergetool
$ git remote
こちらの記事が参考になります。
Tig
gitに慣れてきたら、tigというツールも触ってみましょう。
コミット履歴や編集内容などが見やすいです。
インストール
~/local/srcにソースを配置し、~/local/binにtigを配置します。
$ mkdir -p ~/local/src
$ wget https://github.com/jonas/tig/releases/download/tig-2.3.3/tig-2.3.3.tar.gz
$ tar zxf tig-2.3.3.tar.gz
$ cd ./tig-2.3.3
$ ./configure --prefix=$HOME/local
$ make
$ make install
まとめ
この記事ではGitを共有しました。
最初はGitの概念やコマンドに戸惑うこともあるかもしれませんが、とりあえず習慣的に使ってみましょう。
1つ1つわからないことを調べて普段から使うようにすれば、いつのまにか使えるようになっているはずです。
私もまだまだ深くは理解していませんが、他の開発者がどんなコミットをしているのか調べるのは結構楽しいものです。
ぜひ、触ってみてください。