Gitの運用方法（初心者向け）

初めましてYuyaです。
エンジニアとしては業務未経験のエンジニアである僕が某プログラミングスクールでチーム開発した時に実際に役立った（メンバーにはそこそこ好評だった）Gitの使い方の知見を残しておきたいと思い記事にします。
まだGitの使い方に慣れていない初心者に参考になると幸いです。


#個人開発編
###〜場面〜ローカルにリポジトリを作成し、リモートリポジトリにプッシュする
* Step①：現在いるディレクトリをgitで管理するための設定ファイルを生成（Gitの初期化）
`$ git init  `.git 隠しファイルが生成される→正確にはリポジトリの初期化

* Step②：[file]の部分にファイル名を指定し、ステージングエリアに追加（基本は -A, —all など使用する）（全部あげたい時は 「. 」や「*」を使用 ）
`$ git add [file] `

* Step③：メッセージをつけて変更履歴を保存
`$ git commit -m “コメント"`

* Step④：originという名前でリモートリポジトリのURLを登録
`$ git remote add origin [リモートリポジトリのurl] `

* Step⑤：ローカルリポジトリの変更をリモートリポジトリにアップロードする。[branchname]にアップロードしたいブランチの名前を指定
`$ git push origin [branch名]`（pushの後 -u を入れると今後、[git push] だけでGitHubにあげられる）


###〜場面〜ローカルリポジトリの変更をリモートにプッシュする
*  Step①：[file]の部分にファイル名を指定し、ステージングエリアに追加（基本は -A, —all など使用する）（全部あげたい時は 「. 」や「*」を使用 ）
`$ git add [file]`

* Step②：メッセージをつけて変更履歴を保存する。
`$ git commit -m “コメント"`

* Step③：ローカルリポジトリの変更をリモートリポジトリにアップロードする。[branch名]にアップロードしたいブランチの名前を指定
`$ git push origin [branch名]`


#チーム開発編
###Git作業の流れ（個人的なやり方、下記の作業繰り返す!!!!!）
* Step①：マスターにいる状態で最新版をダウンロード
`$ git fetch`

* Step②：ローカルのマスターファイルを最新にする
`$ git merge origin/master`

* Step③：最新のマスターファイルからブランチ作成&移動
`$ git checkout -b [branch名]`

　　〜〜〜作業〜〜〜

* Step④：作業完了後、ブランチファイルをローカルにあげる（以下作業フローは同じ）
`$ git add -A`
`$ git commit -m “コメント"`
`$ git push origin [branch名]`

* Step⑤：GitHub上で以下の作業を実施（[【GitHub】Pull Requestの手順 - Qiita](https://qiita.com/aipacommander/items/d61d21988a36a4d0e58b)）
[Compare&pull request]  にプルリクを記載 
[Merge pull request] でマージを確定させる


###〜場面〜他の人のアプリをもらうとき
* リモートリポジトリをローカルリポジトリに複製する(ダウンロード)（urlは複製したいリモート先のurl）
`$ git clone [url]`

###〜場面〜ログを確認するとき
* コミットの履歴を確認する
`$ git log`

* コマンド$ git reset [commit] ・HEAD^ で一つ前・コミットの識別番号で指定も可能
`$ git revert`

* ファイルの追加/変更/削除の確認
`$ git status`

###〜場面〜ブランチ操作
* ブランチの一覧を表示する
`$ git branch`

* ブランチを作成する [branchname]の部分に、作成するブランチの名前を指定します
`$ git branch [branch名]`

* ブランチ名を指定して切り替える
`$ git checkout [branch名]`

* ブランチの作成と切り替えをまとめて実行できるコマンド
`$ git checkout -b [branch名]`

* ブランチの削除
`$ git branch -d [branch名]`（マージ済みブランチの削除）
`$ git branch -D [branch名]`（強制的なブランチの削除）


###〜場面〜新しい作業を始めるとき
* Step①：まずリモートの最新の情報をローカルに取得する
`$ git fetch`

* Step②：どのブランチから切るか確認する（ローカルとリモートのブランチを確認)
`$ git branch -a`

* Step③：②で確認したブランチから、新しくブランチを切る
`$ git checkout -b [新たなブランチ名] [切る元のブランチ]`

* Step④：念のためにブランチができたか確認
`$ git branch`


###〜場面〜任された作業が終わってリモートにあげる時
* Step①：push前までの状態にする
`$ git status`（変更のあるファイルを確認する）
`$ git add -A`（自分が更新した分だけステージングエリアにあげる）
`$ git commit -m “コミットメッセージ”`

* Step②：pushする前に差分の確認→いざpush
`$ git push origin [あげる先のブランチ名]`（現在いるローカルのブランチ名を入れる。初回だと新しくリモートにそのブランチを作成）

* Step③：プルリクエスト編集(New pull request)
[Compare&pull request]  にプルリクを記載 

* Step④：リモート先にあげたブランチをマージする
[Merge pull request] でマージを確定させる


#参考リンク
下記のリンクは非常に役立ったの貼っておきます。

* [git初学者の初めてのチーム開発で気をつける事の備忘録 - Qiita](https://qiita.com/shh-nkmr/items/fde133cbdfa5f0092be1)
* [【GitHub】Pull Requestの手順 - Qiita](https://qiita.com/aipacommander/items/d61d21988a36a4d0e58b)
* [【Git】git add: ステージする(索引に追加)コマンドとオプション | 雪の天秤](http://yukiten.com/blog/info-tec/git-git-add/#content_1_11)
* [【永久保存版】Gitのあらゆるトラブルが解決する神ノウハウ集を翻訳した - LABOT 機械学習ブログ](https://blog.labot.jp/entry/2019/07/01/183204)
* [新しいMacでGitHubのSSH接続をするまでの環境構築手順 - Qiita](https://qiita.com/unsoluble_sugar/items/14bea376d8e6fce82eb3)