Git 学習メモ

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

前回からの続き
CHAPTER3に進む前になんとなくわかっているといい事
やっておくといい事を番外編として纏めました
あとで増えるかもしれません

わかばちゃんと学ぶ git使い方入門で解説されているSourceTreeの操作をCloud9のターミナルで行うにはどうしたらいいかと言うお話です
PC上だと少し違うかもしれませんがGitのコマンドは大体同じかと思います
同じような環境の人のお役に立てれば幸いです

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

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

ターミナルでもあの図を見たい

先に結論を言うと見られました✨

SourceTreeの何がいいかって
樹形図?ワーキングツリー?とか言うあの図形が見られる事が良い
ブランチとかマージとか、コミットが並んでいる様子とかが目に見えるのでとても理解が進みました
で、cloud9で作業するにはSourceTreeが使えないね?と思ってローカルでの開発環境を整えようと頑張ったりしたんだけど結局挫折
「ターミナルであの図を見る方法無いのかな?」って調べてみたら、意外とあっさり見つかりました
ありがたや

御本の本文には出てこないんだけど
ここから先に進むに当たって、これが見られると状況が把握しやすいので書いておきます

ターミナルで樹形図を表示する

CHAPTER2で使ったokonomiyaki.txtを利用して下記のような作業をします
ブランチとかマージとか後述なので、現段階では「何その呪文」と思う方もいるかと思いますが
とりあえずターミナルでも図を見られると言う事が伝われば。はい。

隠し味を入れるまで作ったらブランチ(pancake)を作ってpancake.txtファイルを作りパンケーキを作る手順でadd commitしていきます
パンケーキの材料を混ぜる所まで済んだらmasuterに移動してお好み焼きを焼いてadd commit
pancakeに移動してパンケーキを焼いてadd commit
masterに戻ってマージ(コミットメッセージ:おやつの時間)

この状態をターミナルに表示するとこちら(下から上に進んでいきます)

$git log --oneline --graph    #log表示に 省略表示とグラフ(樹形図)表示のオプションを追加
*   d8ef548 (HEAD -> master) おやつの時間     #現在位置
|\  
| * f57d103 (pancake) パンケーキを焼く        #pancakeブランチここまで(この上でマージ)
| * 5dd47ae 材料を混ぜる
| * d8e9f7c パンケーキミックスをふるいにかける
| * 53012d4 パンケーキを作る
* | 9d6cd48 お好み焼きを焼く
|/  
* 69bb969 隠し味を入れる                      #この上からブランチが分岐
* b55bc08 具材を入れる
* e608704 お好み焼きのたねを作る

ただし、マージする前だと分岐している状態に見えずスタート時点から現在地までの直線表示になります
最初は少し混乱するけど、ブランチを移動している所はそのように表示が出るので見慣れれば大丈夫だと思います

上記の作業中、パンケーキの材料を混ぜる所まで進んで
ブランチ(分岐)はしてるけどマージはしていない状態で見るとこちら
(データ作り直したのでコミットID変わってますが)

ec2-user:~/environment/sample (pancake) $ git log --oneline --graph    #ファイルパス(現在のブランチ名)$git log --oneline --graph 
* d6bd3de (HEAD -> pancake) 材料を混ぜる                #現在位置(HEAD) pancakeブランチ
* e608881 パンケーキミックスをふるいにかける
* fea58b7 パンケーキを作る
* ae318b6 (master) 隠し味を入れる                                        #ここまでmasterブランチ この上から分岐
* 6343a63 具材を入れる
* 2b13af4 お好み焼きのタネを作る

masterブランチに移動して見るとこうなる

ec2-user:~/environment/sample (master) $ git log --oneline --graph    #ファイルパス(現在のブランチ名)$git log --oneline --graph 
* ae318b6 (HEAD -> master) 隠し味を入れる                              #現在位置(HEAD) masterブランチ
* 6343a63 具材を入れる
* 2b13af4 お好み焼きのタネを作る

masterブランチでは隠し味を入れる所までしか進んでいないのでこの状態です
Gitが初めてで本文を読みながらこれを見てくださってる方には何の話だって感じかと思いますが
ターミナルであの図を表示したい時

  • コマンドは「log –oneline –graph」←字間が詰まって「-」(ハイフン1つ)に見えますが「- -」(半角ハイフン2つ・ハイフンの間に空白は無し)です
  • マージしてあるとあの図っぽい表示になる(状況によってならない場合もあります)
  • ブランチを作った後マージしていないと直線に見えるけどビビらない
  • 他のブランチで作ったコミットが消えて見える時があるけどビビらない

と言う事だけとりあえず伝わればと思います

GitHubとの連携

CHAPTER3ではGitHubを使って「Gitのイメージってこういうやつ!」っていう操作をしていくんですが
連携させるための設定を先にやっておくとスムーズなので書いておきます

公開鍵の確認

公開鍵についての諸々はこちらがわかりやすかったです


PCのターミナルではなくcloud9上のターミナルで鍵が設定されているか確認します

鍵の作成

鍵の設定がなければ新しく作成します
ターミナルに鍵を作成するためのコマンドを入力します

$ ssh-keygen

上記のページの説明では、途中「パスワードを設定する」とあるのだけど
ここでパスワードを設定するとGitHubと接続するたびにパスワードの入力を求められます
ちょっと面倒なので私は設定をしませんでした
なので、鍵を作成するためのコードを入力したらひたすらEnterでOKです

安全面などを考えた時、パスワードの設定をしないことが悪い事なのかいい事なのか判断がつかなかったので
その辺は自己責任でお願いします

作った公開鍵を確認する

作成した・登録されていた公開鍵をターミナルに表示させます

$ cat ~/.ssh/id_rsa.pub         #公開鍵を表示するためのコマンド
ssh-rsa 以降長い英数字の羅列    #この行をssh-rsaから全てコピー(改行や余分な空白が入らないように注意)

GitHubでの操作

ヘッダー右端の自分のアイコンをクリック

settingをクリック

Personal settingのメニューからSSH and GPG keysをクリック

New SSH Key(緑のボタン)をクリック

Titleに鍵の名前(cloud9等)Keyに先ほどコピーした公開鍵をペースト

Add SSH Key(緑のボタン)をクリック

接続の確認

ターミナルに戻って無事に接続されているか確認します

$ ssh -T git@github.com     #GitHubとの接続を確認
Hi rakuda-san-desu! You've successfully authenticated, but GitHub does not provide shell access.

#このメッセージが表示されれば成功

鍵を作成する際にパスワードを設定している場合は入力を求めるメッセージが表示されます
ターミナルでパスワードを打ち込む際にカーソルが動かないのでビビりますが
実際には入力されているので、落ち着いてパスワードを入力してEnterを押せば反応します

接続が上手くいかない時の確認ポイント(私の体験)ですが

  • cloud9のターミナル上で鍵の操作をしているか
    (PC上で鍵の操作をしてcloud9から繋がらないぞ?と悩んだことがありますw)
  • 鍵がきちんとコピペされているか
    (行頭・行末のコピー切れ、改行が入っていないか等)
  • 鍵を作成する際パスワードの設定をしていないか
    (上にも書きましたがパスワードを設定した場合は入力が必要です。知らないと入力時ちょっとビビります)

また、cloud9で環境(environments)を切り替えたり作り直したりした時は、環境ごとに鍵の作成→連携先への登録が必要です