Git をローカルで試してみる(使い方 初歩の初歩)

Git をローカルで試してみる(使い方 初歩の初歩)

前記事 > Git 初期設定

「プログラマーじゃないけど Git 入門」
次は、ローカルで Git を使ってみましょう。

01git init

Git bash(インストールによってはコマンドプロンプトでもOK)を立ち上げ、適当なディレクトリに移動した後、

$ mkdir git-sample


$ cd git-sample/


$ git init
Initialized empty Git repository in ./git-sample/.git/

として、カレントディレクトリにリポジトリをつくります。表現の仕方はあるいは、ディレクトリをリポジトリ化するといいますか、これにより、カレントディレクトリに .gitディレクトリをつくられ、カレントディレクトリ内がバージョン管理できるようになります。.gitディレクトリの中は前回見たとおりです。

02git add

カレントディレクトリに適当なテキストファイルをつくります。Windows ですから GUI のエディタで sample.txt などと保存し、続いて、

$ git add sample.txt

とします。このコマンド git addは、該当ファイル(指定によってはディレクトリ)をステージングエリアに追加すると表現されるようです。

Pro Git 日本語版電子書籍にある次の画像がそのイメージです。Stage Fixed と記載された行為になります。

Git – Gitの基本

ファイルをワーキングエリアからステージングエリアに登録し追跡を開始するという理解でいいと思います。git statusで状態を見てみますと、

$ git status
On branch master


Initial commit


Changes to be committed:
  (use "git rm --cached <file>..." to unstage)


        new file:   sample.txt

と表示され、sample.txt をコミットする準備ができている、つまりステージングエリアにあるということです。

で、そのときどんなファイルが作られるか見てみますと、

.git\index.git\objects\f3\ハッシュ値? の2つのファイルがつくられます。再度git addとすればこの2つのファイルが上書きされます。

git statusのメッセージに、unstage の説明がありましたので、試しにやってみましょう。

$ git rm --cached sample.txt
rm 'sample.txt'


$ git status
On branch master


Initial commit


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


        sample.txt


nothing added to commit but untracked files present (use "git add" to track)

状態を見てみますと、Untracked つまり追跡されていないファイルがあるに変わります。.git内のファイルは、indexが書き換えられるだけです。

ということは、indexファイルにステージングエリアの情報が書き込まれているということでしょう。

再度git addしておきましょう。

03git commit

次は、ステージングエリアのファイルの状態を保存するgit commitです。git commitだけですと、コミットメッセージを求めるエディタが立ち上がりますので、通常はgit commit -m "commit massage"とします。

$ git commit -m "最初のコミット"
[master (root-commit) 2d88c89] 最初のコミット
 1 file changed, 2 insertions(+)
 create mode 100644 sample.txt

試しに日本語のメッセージでコミットしてみました。ログを見てみます。

$ git log
commit 2d88c89aaa4aaebf88de79c433d10792b0a2ac8c
Author: ******* <*******@gmail.com>
Date:   Sun Mar 12 15:54:46 2017 +0900


    最初のコミット

これで sample.txt の現在の状態を保存し、Git で管理できるようにしたということでいいと思います。

.gitディレクトリ内を見てみましょう。

これを見ますと、多分、.git\objects\2d\88c89aaa4aaebf88de79c433d10792b0a2ac8cが現在のファイル状態が保存されている実態でしょう。

そして、.git\refs\heads\masterには2d88c89aaa4aaebf88de79c433d10792b0a2ac8cという数値が保存されていますので、これは上の実態のディレクトリとファイル名なんだと思います。

.git\COMMIT_EDITMSGにはコミットメッセージが保存されています。この場合は、

最初のコミット

となっています。

.git\logs\HEAD.git\logs\refs\heads\masterは現時点ではまったく同じ内容のファイルでログとして出力されるようです。コミットを重ねていくとどちらかが変化していくのかもしれません。

今回はここまでです。