はじめに
gitとgithubを使った開発を最近始めました.
何も分からなかったので調べたことを備忘録として書いておきます.
前提知識
- ローカルリポジトリとリモートリポジトリ
簡単にいうと、PCがローカルでgithubがリモート - branch
branchは枝なので幹から生やすことができる.
共有データ(幹)からbranch(枝)を新しく生やして(=複製)、そこを編集する.
作業が終わったら枝を幹に戻すことになるが、データが衝突する可能性があるので、管理者以外はくっつけるのを申請するまでやる.
ちなみにこの枝をくっつけることを「マージ」と言うらしい.
最初だけやること
新規リポジトリのドアを叩くときは、色々準備が必要らしい.
自分がリポジトリを作る場合
今回、私はこの範疇にありませんでしたので書きません(書けません).
方法はたくさんネットに転がってました.
既存リポジトリに参加する場合
$ git clone -b <branch_name> <repogitory_url>
# 例
$ git clone -b master http://...
これでカレントディレクトリにgithubのデータをローカルに落とせる.
branchによってデータが違う. ほとんどの場合masterをcloneしておけば良い気がする.
最初に選択されるbranchはこの時のbranch_nameだと思う.
普段の作業の流れ
- ローカルの状態を更新する
- branchを作成する
- branchを切り替える
- 作業する
- 作業内容をローカルリポジトリに反映する
- localのremoteへの反映をお願いする
作業を始めるまで
$ git pull #ローカルリポジトリを更新
$ git pull origin master #↑のプル先を明示した場合
$ git branch <branch_name> #ブランチを作成
$ git checkout <branch_name> #ブランチを切り替える
# 上2つをまとめたコマンド
$ git checkout -b <branchname>
-----
$ git branch #ローカルブランチ一覧表示(現在のbranchも確認できる)
$ git branch -a/-al/-all #全ブランチを一覧表示
git pullでローカルリポジトリ(pc)を更新できる(=リモートリポジトリ(web)の更新を反映する).
更新されるのは現在選択中のbranchなので、branchをmasterにしておく. git branchで現在ローカルにあるbranchを確認できる.
git checkout <branch_name>でmasterから脱しないと大変なことになりそう.
作業内容を反映する
作業が一通り終わったらリモートリポジトリへ、更新をお願いする.
作業内容はローカルリポジトリでは無く、また別の場所に保存されているので、↓の流れになる
- 作業内容 → ローカルリポジトリ
- ローカル → リモート(の申請)
$ git add * #全部ファイルをadd
$ git commit -m "編集コメント" #branchを更新、編集内容をコメントで
$ git push --set-upstream origin <branch_name> #初めてpushする時だけ
$ git push #現在選択中のbranchをgithub(origin)に送る
$ git push <branch> #明示する場合はこう書く
正直にいうとあまり理解できていないのだが、
add+commitでローカルのbranchに作業内容が反映されるっぽい.
commitのオプションで-mしなければ、commitコマンドの後にその編集画面になるけど面倒なので、一言コメントを同時に書いてしまおうと思う.
git push (引数)でリモートの(引数branch)にローカルのbranchを反映できる.
引数を与えない場合は、checkoutしているbranchが対象となる.
確認をお願いする
あとはwebページ上で、プルリクエスト(マージリクエスト)をすれば管理者に更新をお願いしたことになる.
跡を濁さない
$ git branch -d <branch_name> #branchの削除(マージ済みのみ)
$ git branch -D <branch_name> #branchの削除(強制削除)
もう使わないbranchは削除したほうが良さそうな気がする.