GitHub 初心者による GitHub 入門（２）〜 status みて add して commit して push したい 〜

## はじめに

前回はずいぶん前になってしまいましたが、マイペースに行きましょう。

↓↓↓前回はこちら↓↓↓

* [GitHub 初心者による GitHub 入門 （１）〜 git のインストールとセットアップ・リポジトリの作成・ clone 〜 - Qiita](http://qiita.com/megu_ma/items/e459e62821bdd6dbaccb "GitHub 初心者による GitHub 入門 （１）〜 git のインストールとセットアップ・リポジトリの作成・ clone 〜 - Qiita")

今回は GitHub というより、git の入門になります。


### 参考サイト

今回はこちらのサイトを参考にさせていただきました。感謝！

* [transitive.info - git commit 使い方](http://transitive.info/article/git/command/commit/ "transitive.info - git commit 使い方")
* [Gitのコミットメッセージの書き方 - Qiita](http://qiita.com/itosho/items/9565c6ad2ffc24c09364 "Gitのコミットメッセージの書き方 - Qiita")
* [今さら聞けないgit pushコマンド - shoma2da's diary](http://shoma2da.hatenablog.com/entry/2014/03/08/234523 "今さら聞けないgit pushコマンド - shoma2da's diary")

## 新しいファイル作って

まず、適当に新しいファイルを作成し、
そのファイルを git の管理対象として add してみましょう。

バレンタインなので、それっぽいのを追加してみようかな。。。

`valentine.md` というファイルを作成してみました。

では、このファイルを add してみましょう。

## status みて

add する前に、`git status` コマンドで状態を確認してみましょう。
現在は `master` ブランチで作業をしています。

```bash:ターミナル
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	valentine.md

nothing added to commit but untracked files present (use "git add" to track)
```

ご丁寧に説明書きが表示されましたね。ありがたい。

「コミットするもんはないよ！
　でも、管理されてないファイルがあるよ！
　"git add"を使って管理下に追加したらええんやで！」

って書いてあるような気がします。」

というわけで、add して track されちゃいましょう。

## add して

おまたせしました、やっとですね。

`git add` コマンドを実行します。
コマンドの後ろに追加するファイル名をそっと添えます。

そう、ファイル名はそっと添えるだけ。（大事なことなのでry）

```bash:ターミナル
$ git add valentine.md 
```

これで、新しく追加したファイルが git の管理下に無事追加されました。

もう一度、ステータスを確認してみましょう。

```bash:ターミナル
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	new file:   valentine.md
```

「こいつぁ、新入りだぜ・・・」とでも、言いたげですね。

git の管理下に追加してあげることによって、
新しいファイルが追加されたことが、" new file: "という表示で表されています。 

add したものは commit することができます。

```
出る杭は打たれるし、add したやつは commit される。
```

ここ、テストに出るからね。

## commit して

`git commit` コマンドを実行します。
後ろにそっとファイル名を添えなくていいです。
ファイル名をそっと添えると、そのファイルだけ commit の対象になります。
なにも添えない場合は、add されたもの全て commit の対象になります。

```bash:ターミナル
$ git commit
```

エディタが立ち上がるので、コミットメッセージを入力します。
今回は

```text:コミットメーセージ
[add]はっぴーばれんたいん♪（addしてcommitしてpushする練習用）
```
こんな感じでコミットメッセージを書いてみました。
保存して、エディタを閉じると、続けて自動的にコミット処理が続きます。

```bash:ターミナル
$ git commit
[master 55dcf98] [add]はっぴーばれんたいん♪（addしてcommitしてpushする練習用）
 1 file changed, 3 insertions(+)
 create mode 100644 valentine.md
```

もう一度ステータスを確認してみましょう。

```bash:ターミナル
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
nothing to commit, working directory clean
```

またまたご親切に説明書きがありますね。

「リモートの master ブランチより 1 コミット進んでるやん。
　 "git push" 使って、あなたのローカルのコミットを公開しなはれ。
　コミットするもんはないから、すっきりや〜。」

適当な翻訳なのは勘弁やで。

ということで、次は push しましょう。

## push した

ローカルリポジトリの `master` ブランチのコミットを、
リモートリポジトリの `master` ブランチに push します。

`git push` コマンドを実行しましょう。

```
git push origin [ローカルブランチ]:[リモートブランチ]
```

の書き方になります。

この書き方で、

```
[ローカルブランチ]を[リモートブランチ]に push する
```

ことになります。


```bash:ターミナル
$ git push origin master:master

Username for 'https://github.com': meguma  
Password for 'https://meguma@github.com': 
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 406 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/meguma/sample.git
   fdc4cc8..55dcf98  master -> master
```

これでリモートリポジトリにも、
ローカルリポジトリのコミットを反映することができました！

## おまけ

push した後、気づいてしまった。。。

![typo.png](https://qiita-image-store.s3.amazonaws.com/0/62698/71e06d68-d32d-47c0-6222-68de342319e6.png)

おもいっきしタイポをしてしまいました・・・。恥ずかしい（；；）
なので、ついでに修正もしてみました。

ファイルを修正後、add する前のステータスを見てみましょう。

```bash:ターミナル
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   valentine.md

no changes added to commit (use "git add" and/or "git commit -a")
```

今度はファイルが「変更」されたので `modified:` という表示になっています。

では、今回は「 add して commit 」という流れを
`git commit` コマンドの `-a` オプションを利用して、一気にやってしまいます。

`git commit -a` のコマンドを実行すると、
変更点が自動的に add されてから commit が実行されます。

```bash:ターミナル
$ git commit -a
[master 9f086de] [fix]タイポを修正
 1 file changed, 1 insertion(+), 1 deletion(-)
```

```bash:ターミナル
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
nothing to commit, working directory clean
```

commit が完了したので、改めて push を行います。
今回は push する先の branch 名の表記を省略した書き方をしています。
（書き方の詳しい説明は参考サイト等をご参照くださいませ。）

```bash:ターミナル
$ git push origin master
Username for 'https://github.com': meguma
Password for 'https://meguma@github.com': 
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 352 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/meguma/sample.git
   55dcf98..9f086de  master -> master
```

これで、無事、恥ずかしいタイポの修正を GitHub に反映することができました。


## 次回予告

とりあえず Https 経由だと push が毎回面倒なので、
まずは ssh 経由に移行しようかなぁ〜と思っております。

コマンドやるなら branch 周りがやりたいかな。

なので、次回は ssh 移行手順か、branch 周りで。

以上、おわり。