git command(clone checkout reset commit stash merge rebase)

#Gitコマンド（クローン、チェックアウト、コミット取り消し、スタッシュ、マージ、リベース）

Qiitaの記事には毎回助けられているので、Gitコマンドを勉強がてらまとめてみました。

| 用語 | ここでの意味 |
| :-- | :---------------- |
| クローン | リポジトリ環境をローカルに作成すること。 |
| リモート | リモートにあるブランチ |
| ワークツリー | ローカルにあるブランチ |
| インデックス | コミットを管理する対象のこと。 |
| チェックアウト | ブランチの変更又はローカルの編集をリモートで上書きすること。 |
| スタッシュ | インデックスを一時退避すること。 |
| マージ | 外部のブランチと自身のブランチとマージすること。 |
| リベース | 自身のブランチの派生元を繋ぎ変えること。 |
| コンフリクト | 自身と相手のブランチの修正ファイルが衝突すること。 |


####a.リポジトリ操作
*a-1.クローン*
`cd /pc_data/project/rkamiya`
`git clone git@bitbucket.org:rkamiya87/ios_mockup.git`
`git clone https://rkamiya87@bitbucket.org/rkamiya87/ios_mockup.git`
`git clone -b develop https://rkamiya87@bitbucket.org/rkamiya87/ios_mockup.git`

####b.ブランチ操作
*b-1.リモートの状況を取得する。*
`git fetch`

*b-2.現在のブランチを確認する。*
`git branch -a`

*b-3.現在のブランチを変更する。*
`git checkout -q develop`

*b-4.現在のブランチからブランチを作成する。*
`git checkout -b feature/issue#200`

*b-5.ブランチをリモートに作成する。*
`git push -u origin master`

*b-6.ワークツリーのブランチを削除する。*
`git branch -D feature/issue#200`

*b-7.リモートのブランチを削除する。*
`git push --delete origin feature/issue#200`

####c.ファイル及びインデックス操作。
*c-1.ファイルステータスを確認する。*
*（緑がインデックスに追加済み、赤が未追加）*
`cd /pc_data/project/rkamiya/ios_mockup`
`git status -uall -s`

*c-2.インデックスに変更ファイルを追加する。*
`git add ./.gitignore`
`git add ./IOSMockUp`
`git add .`

*c-3.インデックスの追加ファイルをリセットする。*
`git reset ./.gitignore`
`git reset ./IOSMockUp`
`git reset .`

*c-4.インデックス及び物理的にファイルを削除する。*
`git rm ./.gitignore`
`git rm -rf ./IOSMockUp`

*c-5.ファイル名、ファイルパスを変更する。*
`git mv ./TestViewController.swift ./MemuViewController.swift`

*c-6.ファイルをチェックアウト状態に戻す。*
`git checkout feature/issue#200 ./.gitignore`
`git checkout feature/issue#200 ./IOSMockUp`
`git checkout feature/issue#200 .`
`git checkout d8dd762 ./IOSMockUp`

*c-7.ファイルの変更箇所を確認する。*
`git diff feature/issue#200 ./.gitignore`
`git diff feature/issue#200 ./IOSMockUp`
`git diff feature/issue#200 .`
`git diff d8dd762 .`

*gitコマンドのvi形式の操作方法。*
`G ... 先頭へ`
`shift + G ... 終端へ`
`control + f ... ページ進む`
`control + b ... ページ戻る`
`/ キーワード ... 検索`
`n ... 検索時次へ`
`N ... 検索時前へ`
`q ... 閉じる。`

*c-8.インデックスをワークツリーにコミットする。*
`git commit -m "initial commit"`
`git commit -m "commit test"`

*c-9.ワークツリーをリモートにあげる。*
`git push`

*c-10.リモートをワークツリーに適用する。*
`git pull origin develop`

####d.コミット番号を確認する。
`git log --oneline --decorate --graph --all`

####e.HEADを変更する。
`git checkout -q 92d593f`

####f.ワークツリーのコミットを取り消す。
`git checkout -q feature/issue#200`
`git reset --soft HEAD^`

####g.ワークツリーでリモートを上書きする。
*（リモートのソースが消えるので必ず上書き内容を確認すること）*
`git push -f origin feature/issue#200`

####h.スタッシュする。
*h-1.インデックスに追加したファイルをスタッシュする。*
`git stash`
`git stash save "stash1"`

*h-2.スタッシュ番号を表示する。*
`git stash list`

*h-3.スタッシュのファイル一覧を表示する。*
`git stash show stash@{0}`

*h-4.スタッシュの差分を表示する。*
`git stash show -p stash@{0}`

*h-5.スタッシュを適用する。*
`git stash apply stash@{0}`

*h-6.スタッシュを削除する。*
`git stash drop stash@{0}`

*h-7.スタッシュを全て削除する。*
`git stash clear`

####i.ブランチを自身にマージする。
*i-1.マージする。*
`git checkout -q feature/issue#200`
`git merge feature/issue#201`

*i-2.コンフリクト時の対応を行う。*
`・コンフリクトした場合は、コンフリクト位置を修正する。`
`git add .`
`git commit -m "fixed conflict"`

*i-3.マージをリセットする。*
`git reset`

####j.ブランチの派生元をリベースする。
*j-1.リベースする。*
`git rebase -i 852f0a3`

*j-2.リベースコメントをviで編集する。*
`・1行目のpickを残し、それ以降のコミットの先頭をfixupにする。`
`・最後はwqで保存する。`

*j-3.コンフリクト時の対応を行う。*
`・コンフリクトした場合は、コンフリクト位置を修正する。`
`git add .`
`git commit -m "fixed conflict"`
`git rebase --continue`

*j-4.リベースをリセットする。*
`git rebase --abort`