はじめてのGitHub×VSCode

#まずGitとは
プログラムソースなどの変更履歴を管理する、分散型のバージョン管理の仕組みです。
分散型とは、
サーバとローカル環境（自分のパソコンなど）に、リポジトリが作成されるということです。
ローカルで開発しコードの変更履歴を保存（コミット）することができるので、
常時ネットワークに接続していなくても作業ができます。
サーバのリポジトリと同期するときに、マージ等を含め作業すればよいこととなります。

#Gitの仕組みで動いているWebサービスについて
複数あります。
・GitHub
　無料では、すべてソースは公開されます。
・BitBucket
　無料でも、5ユーザーまでソースを非公開で共有できます。
など。


#GitHubとは
GitHubはGitHub社で運営されており、個人・企業問わず無料で利用することができます。
無料サービスではリポジトリは公開されてしまいますが、
有料サービスを利用すると、非公開のリポジトリも作成できます。

#GUIは何を使う
会社で使い始めたこともあり、VSCode一択です(笑)
VSCodeとは、マイクロソフトが開発したソースコードエディタである。
Windows、Linux、macOS上で動作し、
デバッグ・Gitクライアントの統合・シンタックスハイライト・
インテリセンス・スニペット・リファクタリングなどの機能を持つ。

#Gitの用語
・**リモートリポジトリ**
　Webサービス上のソース・変更履歴の貯蔵庫（GitHubなど）
・**ローカルリポジトリ**
　ローカルＰＣ上のソース・変更履歴の貯蔵庫
・**クローン**
　リモートリポジトリの全データ（対象のリポジトリのみ）を、
　ローカルリポジトリへダウンロード
・**ステージ**
　コミット対象を選択
・**コミット**
　ローカルリポジトリにファイルを保存
・**プッシュ**
　ローカルリポジトリの変更分を、リモートリポジトリにアップロード
・**プル**
　リモートリポジトリの変更分を、ローカルリポジトリにダウンロード
　（ローカルのファイル更新）
・**フェッチ**
　リモートリポジトリの変更分を、ローカルリポジトリにダウンロード
　（ローカルのファイルは更新されない）。
　ローカル上でリモートとの変更を確認できるのみ
・**ブランチ**
　対象と、全く同じフォルダ・ファイル構造を作成
・**マージ**
　ブランチ同士を結合（過去のコミットは改変されずに、
　マージするためだけのコミットが作成される）
・**リベース**
　ブランチ同士を結合（過去のコミットを改変して、履歴が一直線になる）
　※履歴がみやすいけど、履歴が改変される

※プルは、内部的にフェッチとマージをおこなっているらしい。
#使ってみた
①Git,VSCodeをインストール
　・https://gitforwindows.org
　　⇒stable(安定版)、insider（最新版）あり。
　　　私は、いったん、insiderで。
　・https://code.visualstudio.com/

②ディレクトリを作成し、右クリックからVSCodeを起動
![a.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/f4274066-f0c4-bfc0-da92-db68dfcd41ea.jpeg)
③クローンを作成
![d.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/d98e9ca2-ed56-dd64-3d6b-07c869dea443.jpeg)
▼URLはGitHubより
![c.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/9e721da2-fa80-4116-5a73-e35f338e3d55.jpeg)
⇒これで、リモートリポジトリがローカルリポジトリにコピーされた。

④ブランチを作成
![e.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/12c5a0f4-69b3-7e02-698a-b7b597f9c31d.jpeg)
⑤ソース修正
![f.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/7c4ec9e4-b987-e6e8-8c6d-e5c3ef0ee4d8.jpeg)
⑥チェンジステージ＆コミット
![g.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/2fa21510-6fc9-bf7f-c0f1-6eb502d87117.jpeg)
⇒これで、ローカルリポジトリに反映された。

⑦プッシュ
![h.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/dcf4b7c7-a63c-df3b-6b3b-1fd7534d9e98.jpeg)
⇒これで、リモートリポジトリに反映された。
　新しく、ブランチ【add_date】が追加されている。

#+α
###▼プルリクエスト
プルリクエストとは、自分が行った変更を取り込んでもらうように
管理者に提案することである。

下記の運用が多いらしい。
①クローン
　⇒リモートリポジトリをコピーし、ローカルリポジトリを作成
②自分が担当する実装用の、ブランチを作成
③変更点をコミット
　⇒ローカルリポジトリに反映
④"②"のブランチをプッシュ
　⇒リモートリポジトリに反映
⑤GitHubの画面でプルリクエストを送信
※VScode上からプルリクエストするには（拡張機能：GitHub Pull Requests）
![i.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/afea701f-4ddb-4c2e-2587-4dc0162dcfbd.jpeg)

⑥管理者がプルリクエストの内容を確認し、問題なければ元のブランチにマージする。

###▼その他
・スカッシュ・・・コミットを１つにまとめる（何度も変更して履歴が見づらいとき）
・リバート・・・過去のコミットを打ち消す
・タグ付け・・・リリースのバージョン番号をつけたり、公開日をいれたり。
・同期除外対象ファイルを設定（.gitignore）
　ファイルを右クリックして。。
![j.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/81121fa0-6551-9b4a-c757-2863da224d57.jpeg)

#Git関係ないけど
###▼あったんや、日本語化！
![k.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/20f15bf9-9bbd-1c70-6bb2-ecb23af49929.jpeg)
これはありがたい！(*´ω｀)

###▼pythonのデバッグ（extensionでpythonを追加してデバッグ）
![m.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/449eae76-6f1a-7d92-d3a1-dbd0e351c5c8.jpeg)


#まとめ
とりあえず、闇雲に通しで動かしてみた感じです(^^;
使い慣れたタイミングで、記事を更新しようと思います！