1. プッシュするまでの流れ
ステージングにあげる
$ git add [file]
$ git add .
ワークスペースに戻したい
$ git reset [file]
コミットする
$ git commit -m [comment]
プッシュする
$ git push [destination] [branch]
ただし、リモートリポジトリの同一名称のブランチにpushする分には引数は省略可能。
2. ブランチ

HEADとは現在のコミットの位置を表すポインタ。checkoutコマンドはこのポインタの指す場所を変更するコマンド。
なので、ブランチ名だけでなくコミットのSHA1_IDを指定することも可能。
$ git checkout [branch]
$ git checkout -b [branch] #作成して移動
$ git checkout [SHA1_ID]
$ git branch [branch] #作成
$ git branch -d [branch] #削除
3. スタッシュ

Stushとは一時退避場所。
ステージングに変更がある状態ではブランチを移動できない。その旨のエラーが出る。そこで使用するのがStash。
移動前に格納して、移動後に取り出す。上記はmaster→branchDevへ移動する例。
$ git stash # stashに格納
$ git stach list # 一覧表示
$ git stash pop # 取り出し
4. マージ

複数のブランチを一つにするときにはコンフリクトが生じることがある。
それを解決するのがmergeである。
ファイルを編集し、再度コミットすることでマージできる。
取り込む側のブランチ上でこのコマンドを実行する。
$ git merge [branch]
5. クローン

ブランチ全てを持っては行かない。追跡用のそのブランチへのパスだけ持っている。
必要であればcheckout [branch]とすると$git checkout -b branch remotes/origin/[branch]と等価な実行結果が得られる。
$ git clone [already_exist_branch] [new_branch] #作成
6. ベアリポジトリ
作業場のないリポジトリ。github上に置いているリモートリポジトリはこれに当たる。
編集方法はpushのみ。

$ git clone --bare [already_exist_branch] [new_bare_branch] #作成
7. remoteコマンド
$ git remote -v show originとすることで、リモートのoriginと自身を比べて最新か更新があるかがわかる。
remote origin
Fetch URL: /Users/username/bare_test
Push URL: /Users/username/bare_test HEAD branch: master Remote branches:
branchB tracked
branchC tracked
branchD tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
8. プル
fetchしてmergeしている。
(1) コンフリクトしない易しい時
(2) コンフリクトしためんどくさい時
9. リモートへの新規ブランチ作成
$ git push --set-upstream origin [new_branch]
10. rebaseを使う
base(ブランチが枝分かれした部分)を変更できる。
ユースケース1
ユースケース2
同じく、例としては何度も追加した対して中身のないコミットログを全てgitにあげるのは無駄なので、いらないものをスカッシュする。

11. 設定
エイリアス$ git lolは以下のようにして設定する。
$ git config --global alias.lol "log --graph --decorate --pretty=oneline --all --abbrev-commit"







