Git

Git(ギット)とは

Gitとは

Gitとは、ソースコードやファイルなどの変更履歴を管理する分散型バージョン管理システムです。

Gitを利用することで、ファイルの作成日時、変更日時、変更点などの履歴を保管できます。
何度も変更を加えたファイルであっても、過去の状態や変更内容を確認したり、変更前の状態を復元することが可能となります。


分散型バージョン管理システムとは

プロジェクトに関わる各開発者がそれぞれローカルにリポジトリを持ち、必要に応じてリポジトリ間で変更点をやりとりすることによってソースコードなどの管理を行う管理システムです。

中央リポジトリに変更をリリース(コミット)する前に、ローカルリポジトリで一時作業の履歴管理ができます。


Gitのローカルリポジトリの概念

Gitでは、ローカルリポジトリは3階層ツリーで管理されます。

  • ファイルが存在する作業ディレクトリを「Working Directory」といいます。
  • コミット前の一時領域を「Index」といいます。
  • 最終コミット時点を「HEAD」といいます。

[WorkingDirectory] --(add)--> [Index] --(commit)--> [HEAD]

Gitのステージングとは

作業ディレクトリとローカルリポジトリの間に「Index」という領域があり、ローカルリポジトリにcommitする前に一度「Index」に変更ファイルを置く(記録する)ことをステージングと言います。

ステージングの目的は、1回のコミットに複数の修正が行われていても各変更差分をログから明示的に把握しやすくするためです。

CVSやSubverseionなどのバージョン管理システムの場合には、変更差分を全て中央リポジトリにコミット対象するため、複数の修正を並行すると変更点が明示されないこととなります。


Git設定ファイル

管理対象外ファイルを無視する

ログ関係ファイルや「.DS_Store」などの隠しファイルといったGitの管理対象外にするファイルは、「.gitignore」というファイルを作成して無視するファイルのパターンを列挙します。

「.gitignore」の影響範囲は、それが置かれたディレクトリ以下全てのgit管理下のディレクトリです。


$ cat .gitignore
.DS_Store      # Macの一時ファイル
*.log          # xxxx.logファイル
*.swp          # xxxx.swpファイル

Gitその他コマンド

インターフェースモード

GitをGUIモードで起動します。


$ gitk

インタラクティブ方式でファイルを追加します。

対話的にIndexに加えるファイルを選択することができます。


$ git add -i

コンソール上でアウトプットにカラーを付加します。


$ git config color.ui true

logコマンドでコミット一つに対して一行のみを表示します。


$ git config format.pretty oneline

リポジトリの復旧

リポジトリの正当性チェックを行います。

リポジトリが破損した可能性がある場合に検出できます。


$ git fsck

リポジトリを完全にチェックをする場合には「--full」オプションを指定します。


$ git fsck --full

関連ページ