練習の準備:空っぽのフォルダをコミットしてみる
git commit --allow-empty
git commit --allow-empty -m hoge
git commit --allow-empty -m piyo
git commit --allow-empty -m fuga
としてみた。
( --allow-empty
をつけるとaddしなくてもとりあえずcommitできる)
コミットを確認してみる
git log --oneline
コミットできている。
左側の7桁の英数字は各コミットのID的なもので、次から使っていく。
バージョンを戻す
特定の状態にファイルを戻す
コミットとともにファイルもバージョンに戻す場合。
git reset --hard asdfr87
一番後ろに英数字7桁のやつをつけて、戻したいコミットを指定する。
特定の状態にコミット状態を戻す
ファイル状態はそのままでコミットだけを戻すときは --soft
で。
git reset --soft asdfr87
新しいブランチを作成&切り替え
git checkout -b dev
存在しないブランチへの移動はエラーになるらしいが、-b
オプションで新規作成することになりエラーにならない。
作ったブランチを一覧でみる
git branch
↓今回は dev
fix
を新たに作成したのでこんな感じになる(*は今いるブランチを指す)
ブランチの差分を見る
git show-branch
リモートも一覧に表示したいとき
-a
オプションで。リモートのやつは origin/master
のように表示されている。
git show-branch -a
マージする
git merge <マージしたいブランチ名>
コンフリクトしたとき
同じファイルで違う内容のものが書かれている場合はコンフリクトのメッセージが出る。
ちなみに
git status -s
とするとコンフリクトしているファイルは UU
と表示される。
コンフリクトしたファイルのソース
こんな感じで差分が出るので、どっちかを消すなり、どっちも消すなりして修正する。
(PhpStormとかを使っていれば楽チン)
コンフリクト解決したら
addしてcommitする。
この時点でMergeが完了、ということになる。
ちなみにMergeしたコミットをGithubで見ると↓みたいな感じで 2 parents
と出る。
remoteにpushする
remoteの登録
git remote add origin <リポジトリのURL>
登録したリポジトリは git remote -v
でみれる。
pushする
- fixブランチをmasterブランチ(リモートの)にpushしたいとき
git push origin fix:master
- masterの内容を他のブランチ(topic_apple)として切ってpushしたいとき
git push origin master:topic_apple
プルリクを投げる
Reverse merge
あまり使わないらしいから省略。
Squash merge(スクワッシュマージ)
複数のコミットを1つにまとめるもの。
「機能単位ごとにまとめたほうがログが見やすい」ようなときとか