Git 学習メモ

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

前回からの続き
ここからが本格的な(?)Gitの使い方って感じです

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

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

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

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

SECTION 08|リポジトリのコピーをしてくる

他の人が作ったリモートリポジトリからデータをコピーしてくる方法です
フォークについてはターミナルを使わないので省略

クローン

GitHubのページでClone or Download(緑のボタンをクリック)
御本ではhttps://で始まるURLをコピーしていますが
Use SSH」をクリックして「git@github.com:~」の部分(SSH接続用のリポジトリアドレス)をコピーします

ターミナルに移ってコマンドを実行

ec2-user:~/environment $ git clone git@github.com:user-name/mao-seminar.git    #Git clone SSH接続用のリポジトリアドレスをペースト
Cloning into 'mao-seminar'...                                                    #この下に進行状況が表示される

エラーが出る時はSSHの接続設定やhttpsから始まるURLをコピペしていないか確認してみて下さい

ファイルの確認

ワークスペースの直下にフォルダがコピーされています
ダブルクリックで開けます

次のセクションに移る前に作業ディレクトリに移動しておきます
このデータは.gitフォルダを含んでいるのリポジトリの設定は必要ありません
ログ表示もできます

ec2-user:~/environment $ cd mao-seminar/                    #mao-seminarフォルダに移動
ec2-user:~/environment/mao-seminar (master) $ git log --oneline --graph     #現在地のパス(現在のブランチ) $ 省略表示とグラフ(樹形図)表示を追加したログを表示させるコマンド
* 0c3251c (HEAD -> master, origin/master, origin/HEAD) READMEにGitHub PagesのURLを追加  
* 1294305 活動内容ページを追加
* 1ccc226 メンバー紹介ページを追加
* 56e6bd5 トップページを追加
* 7feda41 画像を追加
* 411cdea スタイルを追加
* 432ffbe gitignoreを追加
* 2e6e21e README.mdを追加

(HEAD -> master, origin/master, origin/HEAD)は表示位置の説明的な物です。ざっくりですが。

SECTION 09|ブランチ

現在いるブランチの確認方法

ec2-user:~/environment/mao-seminar (master) $ git branch
* master

git branchで現在存在するブランチの一覧が表示されます
*印が付いて緑色で表示されているものが現在作業中のブランチです(現在は新しいブランチを作っていないのでmasterのみ)
現在のブランチ名を知りたいだけであれば
「ec2-user:~/environment/mao-seminar (master) $ 」←このように常にカッコ内・太字の部分に表示されています

新規ブランチを作ってコミット

ec2-user:~/environment/mao-seminar (master) $ git checkout -b profile  #git checkout -b 設定したいブランチ名
Switched to a new branch 'profile'
ec2-user:~/environment/mao-seminar (profile) $ git branch              #現在のブランチ名の表示がprofifeになっている
  master                                                               #ブランチ一覧を表示させると現在のブランチがprofileになっていることを確認できる
* profile

本文に従ってprofile.htmlを編集、ステージ/コミットしてログを表示してみる

ec2-user:~/environment/mao-seminar (profile) $ git log --oneline --graph
* 0ca0a04 (HEAD -> profile) わかばのプロフィール
* 0c3251c (origin/master, origin/HEAD, master) READMEにGitHub PagesのURLを追加
* 1294305 活動内容ページを追加
* 1ccc226 メンバー紹介ページを追加
* 56e6bd5 トップページを追加
* 7feda41 画像を追加
* 411cdea スタイルを追加
* 432ffbe gitignoreを追加
* 2e6e21e README.mdを追加

masterブランチに移動してログを確認すると
番外編で触れたようにprofileブランチとコミットが消えて見えて若干びっくりしますが
ブランチ一覧を見ればprofileブランチが存在することがわかります
SourceTreeと同じように現存する枝葉が全られる方法があると良いのですが
ご存知の方いらっしゃいましたら教えてくださいです

ec2-user:~/environment/mao-seminar (profile) $  git checkout master  #git checkout 移動したいブランチ名
ec2-user:~/environment/mao-seminar (master) $ git log --oneline --graph
* 0c3251c (HEAD -> master, origin/master, origin/HEAD) READMEにGitHub PagesのURLを追加
* 1294305 活動内容ページを追加
* 1ccc226 メンバー紹介ページを追加
* 56e6bd5 トップページを追加
* 7feda41 画像を追加
* 411cdea スタイルを追加
* 432ffbe gitignoreを追加
* 2e6e21e README.mdを追加
ec2-user:~/environment/mao-seminar (master) $ git branch
* master
  profile

SECTION 10|マージ

(master) $ git merge profile    #git merge 統合させたいブランチ名
(master) $ git log --oneline --graph
* 0ca0a04 (HEAD -> master, profile) わかばのプロフィール
* 0c3251c (origin/master, origin/HEAD) READMEにGitHub PagesのURLを追加
* 1294305 活動内容ページを追加
* 1ccc226 メンバー紹介ページを追加
* 56e6bd5 トップページを追加
* 7feda41 画像を追加
* 411cdea スタイルを追加
* 432ffbe gitignoreを追加
* 2e6e21e README.mdを追加

profileブランチでコミットした部分(わかばのプロフィール)をマージしたことにより
masterブランチで表示した樹形図に表示されるようになっている

SECTION 11|プッシュ

$ git push

御本ではユーザー名とパスワードの入力がありますが
番外編で接続設定をしてあるのでコマンドを入力するだけでOKです

SECTION 12|プル

御本の通りGitHubでファイルの更新をしておきます

$ git pull
(master) $ git log --oneline
16016e2 (HEAD -> master, origin/master, origin/HEAD) README.mdにメンバーを追加
0ca0a04 (profile) わかばのプロフィール
0c3251c READMEにGitHub PagesのURLを追加
1294305 活動内容ページを追加
#後略

README.mdファイルを開くと更新されている事が確認できます

SECTION 13|コンフリクトが起きたら

御本に従ってデータの更新を行います
ターミナルでは残念ながらブランチが二股に分かれている状態を確認できませんがマージします

(master) $ git merge update-news
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html                   #コンフリクトが起きている旨のエラーメッセージ
Automatic merge failed; fix conflicts and then commit the result.  #どうしたらいいかの指示も出してくれる

index.htmlでエラーが起きていると教えてくれているのでファイルを開いて修正→ステージ・コミットする

SECTION 14|プルリクエスト

コマンドとしては新しいことはないです。

御本に従ってリポジトリをフォーク・クローンしてくる

プルリクエスト用に新規ブランチ・add-myfileを作成

データを更新してステージ・コミット

add-myfileにいる状態でpush

以降、ご本の通りGitHubで操作

SECTION 15|バージョン管理をしなくていいファイルを作る

.gitignoreファイルは隠しファイルの為通常では見えません
cloud9では下の図の様に設定の赤丸部分にチェックを入れると見えるようになります
rails newでデータを作成した場合などは初めから用意されていますが
自分で作る場合はリポジトリのルート直下に作成します

すでにコミット済のファイルを無視リストに入れる

$ git rm --cached 無視したいファイル名

コマンド実行後.gitignoreに無視したいファイル名を追加して保存
.gitignoreを指定してステージ・コミット

SECTION 16|Bitbucketの使い方

Bitbucketと連携させる

Bitbucketでアカウントの新規登録をしたら、番外編でGitHubの登録をした時と同じようにSSH鍵を設定します

左下の自分のアイコン表示をクリック

Bitbucket Settingをクリック

表示されたメニューからSSH鍵をクリック

鍵を追加(青いボタン)をクリックして鍵の名前を入力・公開鍵をコピペ

ターミナルで接続を確認

ssh -T git@bitbucket.org    #接続を確認するコマンド
logged in as user-name      #接続成功のメッセージ

You can use git or hg to connect to Bitbucket. Shell access is disabled.

Bitbucketからクローンする

御本に従ってBitbucketでリポジトリを作りREADME.mdファイルを作成

右上にあるクローンの作成ボタンをクリック

SSH接続用のリポジトリアドレスをコピー
git cloneのコマンドも付いているのでフォーム内をコピーしたらターミナルにそのままペーストでOK

プルリクエスト

指示通りにファイルを作ってステージ→コミット→プッシュ
すると見慣れないメッセージが出てきました

(add-sample) $ git push
fatal: The current branch add-sample has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin add-sample    #この行をコピペする

ざっくりですが、リモート先に現在のブランチ(add-sample)がないよって感じのメッセージです。
指示された行をコピペすればOK。
リモートリポジトリの上流ブランチに現在のブランチ(add-sample)をセットするよって感じです。
これを毎回出さなくするためのコマンドもあるようですが
「ブランチからプッシュしている→プルリクを出す為のプッシュ」に慣れるまで現行で行こうと思います

プッシュ後の操作は御本の通りです。