前回
Git(GitHub)の勉強をする。まずGitについて
http://qiita.com/yoshihiro_fof/items/e08fc7cc1e04a30ec67a
実際にGitを触ってみる
前回、超初歩のGitとはなんぞやを確認。
ここからは実際に触ってみる。
Gitのインストール
私の環境はWindows7。
前回同様の教本とした【エンジニアのためのGitの教科書 実践で使える!バージョン管理とチーム開発手法】の説明通りにやる。
と言いたいところだが
職場の環境や、数ヶ月前に一度ちょっと勉強した時に、ここらへんの事をやってしまった事もあり、割愛。
というか自分でもやったかどうか忘れて覚えていない。
教本によるとmsysGitというのをインストールするようだが、中途半端に自分で環境を用意してしまっているので、ここからは自分の道に走り出す。
現在、分からないながらにも自力でGitHubでリポジトリを作ってあり、SourceTreeというソフトでGUIを持ってそのリポジトリを管理出来る所まではやってある。
あとEclipseでそのプロジェクトをGitプロジェクトとして読み込んである。
このSourceTreeというソフト上でコンソールからCUIとしてGitを触れるようでもあるので、これを使って練習をしていこうと思う。
msysGit(皆なんて読んでる?)
GitをWindows環境で使うソフト。Cygwinというのも同じくWindows上でGitを使えるようにするソフトらしい。Git BashというWindowsのコマンドプロンプトに似たCUIツールが一緒にインストールされるので、そこからGit操作をする、らしい。
GitHub(ぎっとはぶ)
Gitのリポジトリをホスティングするサービス
Webサービス。
SourceTree(そーすつりー)
Atlassian社の出しているソフト。
本来CUIでコマンド操作するGitを、GUIとしてグラフィカルに操作出来るようなソフト
割愛する項目
- ユーザー名とメールアドレスの設定
- git init(Gitリポジトリを作成する)
ユーザー名とメールアドレスの設定は以前設定済みのため。
Gitリポジトリの作成は、今回GitHubで作成済みのリポジトリを練習用に使うため。
練習開始:Gitステータスの確認コマンド($ git status)
$ git status
ワーキングディレクトリの現在のファイルの状態を確認するコマンド
まず、何も変かの無い状態でコマンドを打ってみる。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
次に新規にファイルを作ってみる
**ファイル名:**README.md
**内容:**適当
※色々ファイルが見えるが、前回テストしたりしたときのファイル。とりあえずコミット済なので変更点としては出てこないはず。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present (use "git add" to track)
未追跡状態のファイルの一覧に出てきました。
バージョン管理の対象にされていない(過去に一度もステージング以降に行っていないファイル)状態です。
ステージングエリアへファイルを追加し、コミット対象にする(git add)
$ git add README.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README.md
git add <ファイル名> <ファイル名>(複数指定可)
ワーキングディレクトリからステージングエリアへ登録される。
git add . とすると全てのファイルをステージングエリアに登録出来るらしい。
コミット対象になったファイルを編集する
ステージングエリアに登録したファイルを、コミット前に編集するとこうなる。
README.mdの中身を書き換えてコマンドを実行。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README.md
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.md
Changes to be committed:~
ステージングされているコミット対象の事なので、前回と変わらず。
(コミット対象が増えたり減ったりしていない為)
ようするにステージングエリアの話。
Changes not staged for commit:~
ステージングされたあとにそのファイルが編集され、その変更がステージングされていませんよ、という案内だな。
ようするにワーキングディレクトリの話。
ファイルの変更差分を確認する($ git diff)
バージョン管理ソフトの醍醐味、差分の確認です。
Gitの場合、前述のステージングエリアとワーキングディレクトリとの差分もそうですが、そのあとコミットしたリポジトリとも当然差分の確認が出来ます。
$ git diff README.md
diff --git a/README.md b/README.md
index 4fc2712..4c434c8 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,5 @@
Hello!! My name is Yoshihiro!
-Thank you!
\ No newline at end of file
+Thank you!
+
+add new Comment!
+this is added before Commit!
\ No ne
急に読むのが面倒になってきた感があります。
[-]が付いているのは削除された行
[+]は追加された行
という感じでしょうか。
ちなみにここまでの状態をSourceTreeで見るとこういう状態
確かにステージングにいるREADME.mdと作業中のツリーにいるファイルで内容が違います。
なるほど、こういう風になるのね。
ステージングエリアに登録されたファイルをコミットする($ git commit)
$ git commit -m "New Commit Test"
[master bec6df8] New Commit Test
1 file changed, 2 insertions(+)
create mode 100644 README.md
[-m]で一行のコミットコメントを付けられる。
逆につけない場合は複数行のコミットコメントを付けられる。
やってみた。
$ git add README.md // さっきのステージング後に変更した内容をステージングさせた
$ git commit
// 実際はここの間でテキストファイル編集画面になる。
// 苦手なviとかCUIでの編集画面なので心してかかるべし。
[master 487d8bf] commit comment Test Title
1 file changed, 4 insertions(+), 1 deletion(-)
オプションをつけずにgit commitをした場合のテキストエディタでのお作法があるらしい。
**1行目:**コミットする変更の要約を記述(恐らくコミットのタイトル的な扱い)
**2行目:**空行(なんで?)
**3行目:**変更の詳細等を記載(恐らく実質的なコミットコメント)
こんな感じでやる、と。
そうすると上記の結果になる。
SourceTreeではこうなっている。
ちなみにコメントでdetailのスペルが間違っている気がするが英検三級なので許して欲しい。