Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Gitを触ってみる(未追跡からコミットまで)

More than 3 years have passed since last update.

前回
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
内容:適当

image

※色々ファイルが見えるが、前回テストしたりしたときのファイル。とりあえずコミット済なので変更点としては出てこないはず。

$ 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で見るとこういう状態
image

image

確かにステージングにいる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

image

[-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ではこうなっている。
image
ちなみにコメントでdetailのスペルが間違っている気がするが英検三級なので許して欲しい。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away