LotosLabo

プログラミング技術とか気になった情報を載せていきます

Gitについて1

f:id:lo25131:20140222140025p:plain




Gitとは…

分散型バージョン管理システムのことです。
分散型ではないものにSubversionというのがありますが、今回はこの分散型の方を使っていきます。

Gitでは、ファイルの状態を好きなときに更新履歴として保存しておくことができます。そのため、一度編集したファイルを過去の状態に戻したり、
編集箇所の差分を表示したりすることができます。

また、古いファイルを元に編集したファイルで、他人の編集した最新ファイルを上書きしようとすると、サーバにアップロードした時に警告が出ます。
そのため、知らず知らずのうちに他人の編集内容を上書きしてしまうといった失敗は起こりません。

[サルでもわかるGit入門 より転載]

GitとSubversionの比較

subversionの問題点

・commit対象を指定しづらい
・commitの取り消しは大変
・いくつかの操作がオンラインである
リポジトリが肥大化

gitのメリット

・commit対象の管理が簡単
・コミット内容を後から修正可能
・ほとんどの操作がローカルで完成する
・ブランチやタグ操作が高速
・効率的にリポジトリ内のデータを保持

[いつやるの?Git入門 より転載]

Gitの基本用語

リポジトリ

ファイルやディレクトリの状態を記録する場所です。保存された状態は、内容の変更履歴として格納されています。
変更履歴を管理したいディレクトリをリポジトリの管理下に置くことで、そのディレクトリ内のファイルやディレクトリの変更履歴を記録することができます。

リポジトリの種類


リモートリポジトリ
専用のサーバに配置して複数人で共有するためのリポジトリです。

ローカルリポジトリ
ユーザ一人ひとりが利用するために、自分の手元のマシン上に配置するリポジトリです。


コミット

ファイルやディレクトリの追加・変更を、リポジトリに記録するにはコミットという操作を行います。
コミットを実行すると、リポジトリの内では、前回コミットした時の状態から現在の状態までの差分を記録したコミット(またはリビジョン)と呼ばれるものが作成されます。


Gitの3つのデータ領域


・作業ディレクトリ(ワークツリー)
・ステージング・エリア(インデックス)
・Gitディレクトリ


ここを理解していないとデータを扱う際には困惑してしまいます。

Gitではコマンドによってこの3つのエリアを移動して上から下にドンドン送っていきます。
移動の仕方については後々説明していきます。


Gitコマンド一覧


コマンド名概要
initリポジトリの初期化
config設定の変更、表示
addステージングエリアへのファイル追加
rmファイルの削除
mvファイルの移動
commitリポジトリへのコミット
branchブランチの作成、情報表示
checkoutブランチの切り替え
merge変更内容のマージ
pullリモートリポジトリから変更点のマージ
fetchリポジトリから変更点の取得
pushリポジトリへの変更点の更新
remoteリポジトリの設定、表示
statusリポジトリの状態表示
logリポジトリのログ表示
diffリポジトリの差分表示


Gitの始め方


Gitの環境ではLinuxMacWindowsなどがあります。
今回はその中でもWindows7の64bitでやっていきたいと思います。

WindowsでGitを始めるにはまずGitをインストールする必要があります。

http://www.git-scm.com


ここから最近更新された1.9.0というWindowsのがあるのでダウンロードします。
gitをインストールするとMINGW32(以下Git Bashと呼ぶ)というコンソールアプリケーションがインストールされると思いますので、Gitにはそちらを使っていきたいと思います。
Windowsのgitはmsysgitと呼ばれています。



Gitのインストールについては詳しく説明が書かれているブログがあるのでそちらを参考にしてください。

xyk様の日記


Gitの起動


管理者として起動します。

f:id:lo25131:20140222170519j:plain



まずはじめに日本語表示を可能にする設定を行います。

日本語表示を可能に

もしかしたらGit Bashで日本語を表示するときに

□□□  おとうふ状態になっているかもしれません。


この状態を回避するには、Git Bashのウインドウバーを右クリックしプロパティを開きます。

そしてフォントのサイズもしくは種類を変えると治ります。この原因についてはよくわかっていませんがなぜかコレで治るようです。



ファイル名を日本語で表示できるようにする


まず例として、windowsのtempファイルにTestgitというファイルを作成します。

その中に例として、ワハハ.txt という日本語のテキストファイルを作成してみました。

ls を使い、そのTestgitの中身を見てみると ?????.txtというテキストファイル名になっていると思います。
このままでは文字化けしているため、何のファイルが入っているか見ることが出来ません。

f:id:lo25131:20140222171402j:plain



そのために以下の手順が必要です。

ls --show-control-chars と入力すると


ワハハ.txt と見ることが出来ます。


f:id:lo25131:20140222171649j:plain


しかしこれをいちいち入力するのめんどくさいので略称を登録します。

ここで alias というコマンドを使います。先ほどのコマンド一覧では載せていませんでしたが、後ほど詳しく説明していきます。


alias ls='ls --show-control-chars'


と入力します。
ここでは


alias オリジナル名 = '登録したい長ったらしいコマンド名'

を略称として登録することが出来ます。

ここでは ls と一覧を表示するコマンド名を登録しましたが、特に何を使っても構いません。


f:id:lo25131:20140222172113j:plain


するとこのように ls でも日本語が表示できるようになります。