Git 学習メモ

Git|わかばちゃんと学ぶ git使い方入門CHAPTER2をターミナルで

Railsチュートリアルをやる中で
もうちょっとGitわからないとしんどいなって思ったのでGitの勉強をすることにしました
まずはProgateのGitコースをやったのだけど、まだ全然あやふやだったので
分かりやすいと評判のわかばちゃんと学ぶ git使い方入門を購入

確かに言われている通り
Gitの概念とか、どういう事をやっているかとか、薄ぼんやりだったモノの形が前よりはっきりしてきました
なんだけど、SourceTreeと言うツールを使っての説明なんですよね
私の開発環境(学習環境?)はIDEなCloud9なのでSourceTreeは使えないんですね

と、言う訳で本で解説されているSourceTreeの操作をCloud9のターミナルで行うにはどうしたらいいか
コマンドを調べつつ学習していきましたのでメモっておきます
PC上だと少し違うかもしれませんがGitのコマンドは大体同じかと
同じような環境の人のお役に立てれば幸いです

  • 本文中、ユーザーネームなどはご自身の環境によって変わります
  • 御本があること前提なので本文に載っている部分の解説はほぼ省略しています
  • 御本にあることをターミナルでと言う前提なので紹介されていない機能や関連オプションについてはほぼ省略しています
  • コマンドを実行した際の表示メッセージを適宜省略しています

間違っている所は教えていただけるとありがたいです

わかばちゃんと学ぶ git使い方入門
CHAPTER2の内容をターミナルで実行したい

SECTION 04|リポジトリを作る

ユーザー情報

本文と順番が前後しますが、初めてGitを使う場合はユーザー情報を登録する必要があります
公開されて困らないもので

$git config --global user.name "user-name"       #ユーザー名を入力
$git config --global user.email mail@mail.com    #メールアドレスを入力

globalオプションを付けることで、今後設定の必要がなくなるそうです
プロジェクト単位で設定を変えたいときはglobalオプションを抜いて設定することも出来るようです

リポジトリの作成

バージョン管理をしたいフォルダを作ってそのフォルダに移動
リポジトリに設定

ec2-user:~/environment$ mkdir sample          #sampleディレクトリを作る
ec2-user:~/environment$ cd sample/            #sampleディレクトリに移動
ec2-user:~/environment/ sample$ git init      #Gitを使う宣言(リポジトリに設定)
Initialized empty Git repository in /home/ec2-user/environment/</em>sample/.git/
<em>ec2-user:~/environment/sample (master) $  #現在地のパス(現在のブランチ)

SECTION 05|コミット

見本に沿ってテキストファイルを作ります

ステージに追加する

SourceTreeは更新を察知してくれるけどターミナルでは手動で確認します

$git status          #変更があったファイルがあれば表示される
  #ステージに追加されていれば緑、されていなければ赤で表示
  #現状ではステージに追加されていないので赤で表示されている
  okonomiyaki.txt
$git add -A          #変更があったファイル全てをステージする
$git add ファイル名  #指定したファイルをステージに追加する

コミットする

$git commit -m"お好み焼きのタネを作成"

作業する→ステージに追加する(add)→コミットする
これを繰り返す
$git statusは毎回確認しなくて大丈夫です

ステージングエリアから降ろす

同時に編集した2つのファイルを別々にコミットするならそれぞれをファイルを指定でaddしてコミットでいい気もしますが
git add -A でまとめてステージに追加してしまったと仮定して、コミットに含めたくないファイルをステージから降ろします

okonomiyaki.txtに「焼きます」の一文をを追加
新しくpancake.txtを作成
git add -Aしておく

$ git status
  #二つのファイルがステージに追加されている
  modified:   okonomiyaki.txt
  new file:   pancake.txt
$ git reset HEAD pancake.txt   #pancake.txtをステージから降ろす
$ git status
  modified:   okonomiyaki.txt  #ステージに残っているので緑表示
  pancake.txt                  #ステージから降りているので赤表示

それぞれ別々にコミットまでやってみたりします

SECTION 06|チェックアウトでコミットを移動

git logでコミットIDを表示

さっきまでのデータを使います

$ git log
commit 3993fee6a47c5df46364acefe0f4962ad695953a  #コミットID
Author: user-name <user@mail.com>                #ユーザー情報
Date:   Mon Apr 22 08:29:04 2019 +0000           #コミットした日時

    隠し味を追加    #コミットメッセージ

commit 0ca2adadfdd3174e7b1d480c969fda812c7d4663
Author: user-name <user@mail.com>
Date:   Mon Apr 22 08:31:22 2019 +0000  

    具材を追加

commit 2f2ebaef32df42f80020ffeb0ee2cb4304ae9adc
Author: user-name <user@mail.com>
Date:   Mon Apr 22 08:32:48 2019 +0000 

    お好み焼きのタネを作る

未表示の部分を表示させるにはEnterを打刻
git logの表示を終了させるにはQを打刻

コミットを移動する

git checkoutを利用して”具材を追加”のコミットまで移動する
下記以外にもいろいろメッセージが表示されるけど現時点ではスルーで

 $ git checkout 0ca2adadfdd3174e7b1d480c969fda812c7d4663  #移動したいコミットのIDをコピペ
HEAD is now at 0ca2ada... 具材を追加                        #移動したコミットのID(先頭の7文字)とコミットメッセージ

git checkoutを利用して”隠し味を追加”のコミットまで移動する

$ git checkout 3993fee6a47c5df46364acefe0f4962ad695953a
Previous HEAD position was 0ca2ada... 具材を追加
HEAD is now at 3993fee... 隠し味を追加

okonomiyaki.txtを確認すると 隠し味を追加 まで進んでいる

このまま作業を続けると問題が起こるのだけどそれはまた別の話(SESSION 28にて←書いたらリンク張ります)

おすすめの学習方法

ちょっと面倒なんですが
「本の通りSourceTreeでやってみる→ターミナルでもやってみる」で進めるほうが理解しやすかったです
本でやっている事は何なのかがわからないとターミナルで何をしていいかわからないし

もっと言うと
「SourceTreeでやってみる→対応するコマンドを調べる→ターミナルでやってみる」なのが良かったと思うので
こんな記事書いておいてなんですが、自分で調べながらやる方が頭に入ると思いますw