初心者がGithubをはじめてみる【Push】 (´･ω･`)

#この記事について
 

■ 対象：<font color="DeepSkyBlue">**IT初心者しょぼん君：**</font color>(´･ω･`)
・初心者向け、イメージを掴むキッカケになることが目的の記事
・砕いた理解で、一部正確ではない場合があります。

■ しょぼん君のぼやき
<font color="DeepSkyBlue">**しょぼん君：**</font color>(´･ω･`)『Github使ってるだけで出来る人っぽい』


# Githubとは
Githubは、ソースコード管理を便利にしてくれるサービスです。
利用者は、編集したコードをGithubにアップロードしてチームや全世界に共有しています。

<font color="DeepSkyBlue">**しょぼん君：**</font color>(´･ω･`)『つまりファイル共有サイトってことか』

GitHubにはコードを管理する上で便利な機能があります。例えば・・

・誰がいつ何を編集したかを記録してくれる
・競合（同じ場所を複数人が編集して台無しにしちゃう）を管理出来る
・バージョンを管理をして過去に戻すことが出来る
・ブランチを分けて検証をしたり、マージが出来る。

初めから全機能を理解して使い始める必要はないので、使いながら理解していければ良いと思います。

<font color="DeepSkyBlue">**しょぼん君：**</font color>(´･ω･`)『コード管理に特化してるんだね。』


# Githubの使い方


テストデータを使って実際に触ってみましょう。
今回は、自分で作成したテストファイルをアップロードしてGithub上で公開します。
保存場所のことをリポジトリと呼びますが、Githubには「リモート」と「ローカル」の2つの保存場所があります。

リモートレポジトリ・・みんなで共有可能な最新版の保存場所
ローカルレポジトリ・・自分の世界で管理する最新版の保存場所

<font color="DeepSkyBlue">**しょぼん君：**</font color>(´･ω･`)『ファイル共有サイト と ローカル みたいなものかね』



この2つの場所でやりとりをすることでコード管理をします。
手順としては、まずは2つの場所（リモートとローカル）を作り、その後ローカル側で作ったファイルをリモートリポジトリに送ってみましょう。

以下のイメージ図は一連の流れを表しています。
今回は、ローカルリポジトリから、リモートリポジトリに最新を送る(Push)を実施します。


![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/acfc2063-fb39-13e9-8f0e-8e176b3e9100.png)

Gitでは上記のやり取りをGitコマンドで実行可能です。gitコマンドを使えるかを確認します。

```:Gitコマンド確認
git --version
```

Gitでは、リモートリポジトリにアップロードすることを Push と呼びます。
ツールなどを合わせるとPushする手段は色々あるとは思いますが、今回は基本のコマンドベースで実施します。


# Push実施

下記のURLから「リモートリポジトリ」を用意しましょう。アカウント登録がお済みでない方は、登録を済ませてから実施して下さい。
https://github.com

（画面の配置は変わるため、適宜同様の役割のボタンを探して下さい。）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/baf43cae-6482-e9fe-ad6c-ba5129b15287.png)

![Create_a_New_Repository.png](https://qiita-image-store.s3.amazonaws.com/0/147613/2238f6a0-ff74-bf49-fc20-ecd5416d05f8.png)



| 名前 | 説明 |備考 |
|:-----------|:------------|:------------|
| Owner      | 作成者を指定 | | 
| Repository name| リポジトリの名前     | 
| Description    | リポジトリの説明（任意）        | 
| Public / Private         | 公開（Publick） / 非公開 (Private)| 2019/1/7に新プランが発表され、無料ユーザーでも無制限にプライベートリポジトリを使えるようになった。共有できるのは3人までとなっている。
| Initialize this repository with a README       |README.mdを自動生成するかのチェック       | 
| Add .gitignore   |gitignoreの自動生成を選択    | 
| Add a license   |リポジトリのライセンスを選択    | 





<font color="DeepSkyBlue">**しょぼん君：**</font color>(´･ω･`)『リモートレポジトリが出来た』


作成される以下のURLはあとで使うので、メモをします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/d253f000-a0c3-1175-5dca-01bb4a4c4aa3.png)



続いて、自分の編集場所（ローカルリポジトリ）の準備をします。
ターミナルを開き、お好きなフォルダへ移動(cd)して以下のコマンドを入力。

```:初期化
git init
```

git initはローカルのリポジトリを新たに作成するためのコマンドです。
initコマンドを実行すると、「.git」というリポジトリを構成するディレクトリが作成されます。

<font color="DeepSkyBlue">**しょぼん君：**</font color>(´･ω･`)『そのディレクトリにGit機能を付与したって感じかね』

先ほどメモしたURLを使って、リモートリポジトリ(GitHubのリポジトリ)を登録します。

```:リポジトリ連携
git remote add origin リモートリポジトリのURL（先程、上で確認したURL）

例）
git remote add origin http://shobon******
```
<font color="DeepSkyBlue">**しょぼん君：**</font color>(´･ω･`)『作成したローカルリポジトリを、このURLのリモートリポジトリと連携するぞってことか』


ファイルを1つ用意して、管理してみましょう。今回は test.textファイルを用意しました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/7a1b1d12-63f0-e30e-976e-47e85b6aeb2d.png)

作成したファイルをステージング環境へ追加
（ここではファイル名を指定して追加していますが、一括で追加も出来ます。）

```:ステージング環境への追加
# ローカルリポジトリに登録する一覧に追加
git add test.text
```
ステージングは、コミットするファイルを置いておくためのエリアです。
リポジトリに追加するファイルを選択し追加/削除することができます。

```:ローカルリポジトリへの追加
# ローカルリポジトリへの登録
git commit -m "変更点などのコメント"
```

コミットに使うコメントは自由ですが、英語で記載する人が多い印象です。（私は日本語）
利用シーンに合わせていくつか動詞を覚えて置くと、人のコードを読む際にも理解がしやすいかもしれません。

| シーン | 英語 |
|:-----------|:------------|
|機能追加 |Add |
|機能修正 |Update|
|バグ修正|Fix| 
|削除|Remove | 
|仕様の変更 |Change |
|整理 |Clean | 

出来る人は全部英語でも良いですが、私はタグのような使い方で

git commit -m "Add No100API用に***.javaを追加"  

のように「何をしたか」程度の役割に留めて頭に記載し、日本語と組み合わせています。


コミットしたら、ブランチを指定しプッシュします。

```:リモートリポジトリへの追加
# git push origin ブランチ名
git push origin master
```
今回は作成したばかりのため master ブランチの想定です。（ブランチについて今は置いときます）

今回はPushが目標ですので、ここまで来たらリモートレポジトリのページを確認してみましょう。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/147613/3182e505-b678-9a86-8451-f12f299edf79.png)

<font color="DeepSkyBlue">**しょぼん君：**</font color>(´･ω･`)『コミット時のコメントもここで確認出来るのね』

以上で、リモートレポジトリにPushすることが出来ました。なんとなくGitを利用するイメージが掴めたでしょうか。
~END~




# Appendix
- リンク
    - [しょぼん君シリーズの他記事はこちら(´･ω･`)](https://qiita.com/shobooon/items/90b0d1d7db5e7bd6ca56)