Novice Engineer BLOG

プログラミングやITニュースについて発信していきます。ときどき日常

初心者がGitを無駄にコマンドラインでいじり倒してみたよ(Mac) 2016/07/16

f:id:oooofara_prog:20160710201346p:plain 昨日前回の続きを書いてきます。つらつらと。。。


え〜っと昨日前回はGitをインストールして(僕はしていない。アップルさんのおかげで。) 、
ユーザー名とメールアドレスの登録までやりました。
さぁいよいよGitをいじり倒す!!

イジリ方

  1. 作業ディレクトリでCreate(作成) & Edit(編集) & Delete(削除)
  2. ローカルリポジトリのCreate(作成)
  3. インデックスにadd(追加)
  4. ローカルリポジトリにcommit(反映)
  5. リモートリポジトリにpush(公開)
    ※()内の日本語は僕の勝手なイメージ

用語説明

・リモートリポジトリ
 どこか遠くにある自分専用もしくは共有のロッカーみたいなもの
  (※めっちゃ遠くにあるけど、いつでも出し入れできちゃう)
・ローカルリポジトリ
 家にある自分専用のロッカーみたいなもの
 (※めっちゃ近くにあるから、いつでも出し入れできちゃう)
・インデックス(ステージングエリア)
 ロッカーに入れる前に漏れがないか確認するための引き出しみたいなもの
 (※やっぱり見直しは大事。そういう場所)
・ワーキングツリー(作業ディレクトリ)
 ロッカーから取り出したものをいじくる勉強机みたいなもの
 (※特になし)

前提条件

GitHubやGitLabのサービスを利用
GitHubやGitLabにアカウント登録済み
・リモートリポジトリがすでに作成されている
GitHubやGitLabにまだアカウント持ってない人は、GitHubGitLabから作成してね
(あれ?リンク先表示されてます?)
(英語読めないって人はお父さんかお母さんを呼ぼう)
詳しい方法は「GitHub(GitLab) アカウント作成 HOW!?」ってググれば一瞬

1.作業ディレクトリで新規ファイル作成

① 任意の場所に作業ディレクトリを作成
僕はルートディレクトリにGitというディレクトリを作ったよ
ターミナル開いて、ソッコーmkdir Gitってたたけばできあがり
Gitの部分は自分の好きな名前で大丈夫
Macでのルートディレクトリとは、DesktopやらApplicationやらがあるところね

② 新規ファイルの作成
よし!ファイルの作成!
といきたいところだけど、まずは①で作成したディレクトリに移動しよう
cd Gitってたたけば移動完了。スーパー簡単マン
移動したディレクトリに新規ファイルを作成してくだせぇ
touch sample.txtとたたけば空のsample.txtが作成される
※sample.txtの部分はなんでも良い。任意

・mkdir
ディレクトリを作成するコマンド
・cd
ディレクトリを移動するためのコマンド
・touch
空のファイルを新規作成するためのコマンド

2.ローカルリポジトリの作成

① ローカルリポジトリの作成
git initってたたけば一瞬でローカルリポジトリが作成される

② ローカルリポジトリが作成されたか確認
ls -aってたたいて「.git」ディレクトリが表示されれば成功!なければ失敗・・
(僕は一度も失敗したことはありません。。1/1回成功)

・ls
これはカレントディレクトリ内のディレクトリとファイルを一覧表示するコマンド
・-a
先頭に「.(ピリオド)」がついている非表示のディレクトリやファイルも全て表示するオプション

3.インデックス(ステージングエリア)に追加

git add sample.txtってたたけば一瞬で追加される。簡単マン
samplet.txtの部分は1.②で作成したファイル名を指定してあげる
※複数ファイルを一気にインデックスに追加したいときは
 ファイル名を半角スペースで区切ってあげる

4.ローカルリポジトリに反映

git commitってたたけばローカルリポジトリに反映される
普通にコマンド打って反映させて、はい終わり!で良いけど、
僕はあまのじゃくなので、疑問に思ったわけですよ。
わざわざインデックスに追加する必要なくね!?と・・・
作業ディレクトリ→ローカルリポジトリで良くね?と・・・
インデックス必要ないじゃ〜〜〜〜ん!! と・・・

いやいや必要あるんです!!

まずローカルリポジトリにcommitするまでの流れを見ていこう
①作業ディレクトリでファイルを編集
②編集したファイルの確認(git diff)
③ローカルリポジトリに反映
とまぁおおまかにはこんな感じだと思う
git diffとは、編集したファイル一覧を表示してくれるコマンド

このコマンドでcommitするファイルを確認して、
git commit -m "返信ボタンが押せないバグ対応ってたたいて
ローカルリポジトリに反映されたとする
-mオプションはcommitするときのメッセージを付与するオプション

念のためもう一回git diffで確認すると・・・

あ〜〜〜!!commitし忘れたファイルがある〜〜〜!!

あ、でももう一回commitすればいっか・・・

NO!NO!NO!

ある機能を追加したり、バグ修正したりしたときは修正したファイルをまとめてcommitするのが定石

なぜ?

いちいち分かれていると、前のリビジョン(バージョン)に戻すときに面倒だから

で話を戻すと、ここで本領を発揮するのが

インデックス!!

commitする前に一度インデックスを経由することでcommit漏れを防いでくれる!!
■インデックスがないと
①作業ディレクトリでファイルを編集
②編集したファイルの確認(git diff)
③ローカルリポジトリに反映(git push)

■インデックスがあると
①作業ディレクトリでファイルを編集
②編集したファイルの確認(git diff)
③インデックスに追加(git add)
④もう一度確認(git diff)
⑤漏れがあればインデックスに追加(git add)
⑥ローカルリポジトリに反映(git push)

と、このような手順になるのでcommit漏れを防いでくれるのだ!めでたしめでたし

ちょっと待て! commitしたいファイルが1個だけだったらどうすんだよ!?
インデックスに追加する必要ないじゃん!

おっしゃる通りです。
ですが安心してください!
そんなときのためにこんなオプションを用意しました!!

-a

git commit -a sample.txtってたたけばインデックスをすっとばして、
一気にローカルリポジトリに反映されるぜ!!

5.リモートリポジトリに公開

git pushってたたけば一瞬で反映される
pushするときにローカルリポジトリとリモートリポジトリのbranchを考慮する必要があるけど、
記事が長くなっちゃうから、それは後日ということで・・・

TO BE CONTINUED