//ルートにアクセスされたら/archiveにリダイレクトする

エイリーの備忘録

開発や音楽について書いていこうと思っています。

第2回目 CUIのみでgit入門!

この記事は前回の続きです。
まだ前回の分をご覧になられていない方は前回の分からご覧ください。

前回記事
youmjww.hatenablog.jp

git関連記事一覧
http://youmjww.hatenablog.jp/archive/category/git

まず、手を動かしてみて後から用語などを簡単に解説していきたいと思います。

準備

gitHubのアカウント作成

まず、git hubへアクセスをしてsign up(アカウントを作成してください)
The world's leading software development platform · GitHub

サイトへアクセスをすると下の画像のような画面が出てくるので赤で囲ってあるところに全ての項目に入力して緑色のボタンをクリックしてください。
f:id:youmjww:20170511055049j:plain

Unlimited public repositories for free.にチェックが入っていることを確認して緑色のボタンをクリックしてください。
f:id:youmjww:20170511055452p:plain

アンケートのようなものが出てきますがスルーして緑色のボタンを押して大丈夫です
f:id:youmjww:20170511055813p:plain


登録したメールアドレスにこんな感じのメールが来ているはずなのでVerify email addressをクリックしてください。
f:id:youmjww:20170511060318p:plain

リポジトリを作りたいので Start a projectをクリックしてください
f:id:youmjww:20170511055923p:plain

Repository nameに好きなリポジトリ名をつけて緑色のボタンをクリックしてください
ローカル環境にすでにリポジトリがあるはずなのでInitialize this repository with a READMEにはチェックを入れないでください。
f:id:youmjww:20170511061105p:plain

これで前準備は完了です。

実際にやってみる

リモートリポジトリを登録する

まず、リモートリポジトリにpushするためにリモートリポジトリを登録しておく必要があります。

cd <リポジトリ>
$git remote add origin https://github.com/<githubのユーザーネーム>/<githubのリポジトリ名>.git

pushしてみる

pushとは
リモートリポジトリにファイルをアップロードすることです。

$git push origin master

上記のコマンドを実行すると、usernameとpasswordが聞かれますので、
usernameにgithubに登録したメールアドレス
passwordにgithubのパスワードを入力してください。

githubからちゃんとpush出来たか確認してみる

ちゃんとpushができているとリポジトリにアクセスをするとこのような画面になっているはずです。 
f:id:youmjww:20170511062347p:plain

cloneしてみる

choneとは
リモートリポジトリからリポジトリをコピーしてくることを言います。
まず、今リポジトリの中にいるはずなので一つ上の階層に移動します。
以下これまで使っていたリポジトリリポジトリ1 新しくcloneしてきたリポジトリリポジトリ2とします。

$cd ../
$git chone https://github.com/<githubのユーザー名>/<リポジトリ名>.git

リポジトリ2の中に移動します
$cd <リポジトリ2>

ファイル構成やファイルの内容を確認してみてください。
リポジトリ1と全く同じ内容になっているはずです。

変更を加えてpushしてみる

現在はリポジトリ2の中にいるはずなので何か適当にファイルに変更を加えてください。
ファイル内の変更でも大丈夫ですし、新規ファイルを作成していただいても構いません。
ファイルに変更ができたら下記のコマンドを実行してコミットをしてpushしてください。
pushするときに先ほどと同じようにユーザーネームとパスワードを聞かれるので入力してください。
ついでに、リポジトリ2のコミット履歴を確認してみるといいでしょう。

$git add .
$git commit -m "コミットメッセージ"
$git push origin master
$git log

pullしてみる

pullとは
リモートリポジトリとローカルリポジトリの差分をリモートリポジトリからダウンロードしてきます。

まず、リポジトリ1のコミットの履歴を確認してみます。

$cd ../<リポジトリ1>
$git log

ここでリポジトリ2の内容に差分があることが解ると思います。

リポジトリ2で変更を加えられた変更をリポジトリ1適用してみたいと思います。

$git pull origin master

これで差分がなくなったはずなので確認してみたいと思います。

$git log

リポジトリ2と差分が無いことが解ると思います。

ブランチ操作

ブランチを切ってみる

ブランチとは
簡単に言えばパラレルワールドです。
詳しい用途については後で解説します。

では早速ブランチを切って移動してみたいと思います。

$git checkout -b testBranch

checkoutは本来はブランチ移動用のコマンドなのですが、-bオプションをつけることによりブランチを作成してついでに移動するという意味になります。

testBranch内で変更を加えてみる
$touch branch.txt
$git add .
$git commit -m "branch test"

今加えた変更を覚えておいてください。

masterブランチでlogを確認してみる

とりあえずmasterに移ります

$git checkout master

さっきtestBranch内で加えた変更はパラレルワールドでの出来事なのでここの世界線では全く影響が無いはずです。
確認してみましょう。

まず、先ほど編集を加えたファイルを見てみてください。
ここの世界戦では変更は無かったことになっているはずです。
コミットの履歴も確認してみましょう。

$git log

さっきの変更はここの世界線では見えないはずです。

testBranchをgithubにpushしてみる
git push origin testBranch

これでtestBranchがpushできました。

masterブランチにtestBranchの変更を適用してみる

testBranchの世界で行った変更をmasterブランチに適用したいと思います。

$git checkout master
$git merge testBranch

これでmasterブランチに適用出来たので確認してみましょう。
testBranchで変更を加えたファイルとgit logを確認してみましょう。
masterに居るのに変更が適用されているはずです。

現在のブランチとブランチ一覧の確認

現在居るブランチとブランチのリストを確認することが出来ます。

$git branch

左側にアスタリスクが付いているブランチが現在のブランチです。

不要になったブランチの削除

gitでは要らなくなったブランチはすぐに削除するべきらしいですので削除したいと思います。

git branch -D testBranch
ブランチを使う利点

ブランチを簡単に説明しますと上記でも述べたとおりパラレルワールドです。
つまりどういうことかと言いますと、masterで上手いこと動いてる状態として、新しい機能を追加したかったとします。動いているものに直接変更を加えるのは危険です。プロジェクトごとバックアップをとってもいいのですがそれだと手間がかかります。
そこで、ブランチを使います。
ブランチを使うとmasterに対してパラレルワールドを作ることを出来るので最悪作業ブランチ内で起こったことを全て無かったことにも出来るしすぐにmasterの状態に戻すことも出来ます。

一番大きい利点は、チームで開発をするときにmasterを中心のブランチとしたとして各自それぞれブランチを持っているとそれぞれで作業をして、機能が完成したらmasterにマージするだけで変更が反映されるのでいちいち誰かを待ったり手作業で変更を適用したりする必要が無くなるのが大きな利点かなと感じます。

今回出てきた用語

リモートリポジトリ

サーバー上(リモート)にあるリポジトリです。

ローカルリポジトリ

手元のPC(ローカル)にあるリポジトリです

push

ローカルリポジトリの変更をリモートリポジトリに反映します

構文
$git push origin <ブランチ名>

pull

リモートリポジトリの変更をローカルリポジトリに反映します

構文
$git pull origin <ブランチ名>

clone

リモートリポジトリからリポジトリをダウンロードしてきます

構文
$git clone リポジトリのURL.git

ブランチ

パラレルワールドです。