前記事 > 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 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
は現時点ではまったく同じ内容のファイルでログとして出力されるようです。コミットを重ねていくとどちらかが変化していくのかもしれません。
今回はここまでです。