初心者がGitを少し触れるようになるための記事-commitからpushまで-

## はじめに
この記事はGitがを初めて触る人向けに軽くコマンド周りを触りながらよく使う概念の説明をする記事です。
環境構築についてはそんなに難しくないので今回は触れません。

## この記事が対象とする人
+ Gitが何もわからない人
+ Gitを使わざるを得なくなってしまった人

## Gitの利点
開発をしていると、機能の追加やデバッグなどで<b>バージョン管理</b>をしなくてはいけない場面に出くわすと思います。そういうとき、***新しいファイル1***,***新しいファイル2***,***新しいファイル最終版*** みたいな管理の仕方、してませんか？
一人ならそれでもいいかもしれませんが、チームになったときにそういう管理の仕方をしてしまうと、後々どれが最終的なファイルなのか分らなくなったりと、いろいろと問題が発生します。
そこでGitを導入すると、<b>いつ、誰が、どの個所を、どのように変更したのかがコメント付きで</b>管理できます。

## GitHubに登録しよう
Gitの特徴はチームで開発しているとばらばらになってしまいがちなバージョン管理を、中央のリポジトリを用意して共同で管理できるところにあります。
ということは当然、<b>中央リポジトリがなければGitの利点を生かせないということになります。</b>
しかし心配はご無用、世の中にはGitのリポジトリをホスティングしてくれるサービスがあります。
今回は、その中でも特に有名だと思われる[GitHub](http://GitHub.com)というサービスを使っていきましょう。
基本的には画面の指示に従えば登録できるはずです。
登録したら、緑色の ***New repository*** とか書いてあるボタンを押してリポジトリを作りましょう。今回は練習用にhello-gitという名前で作ります。

ちなみにこのGitHubというサービス、作ったリポジトリにhtmlファイルを置くと静的ページとしてホスティングしてくれるGitHub Pagesというサービスなど、いろいろと面白いサービスがあるので余裕があれば試してみましょう。


## リポジトリを作ろう
まずはじめに、今回の練習用にディレクトリを作りましょう
ちなみに今回の記事では基本的にコマンドラインからの操作になります。
Windowsの人はGit for windowsに付属してきたGit Bashから実行してみましょう。

```bash
mkdir hello-git
```

そうしたら、そのディレクトリに入り

```bash=
cd hello-git
```

次のコマンドを打ちます。

```bash
git init
```

そうすると、ディレクトリ内部に.gitというファイルが自動的に生成されます。
これで、このディレクトリをGitで管理できるようになりました。

## 変更をaddしよう
まず、適当なフォルダを作ります。
今回は、markdownでREADMEを書きましょう。(ちなみにmarkdownでREADMEを書いておくと、GitHub上ではきちんと見やすい形にして表示してくれます。)

```bash=
vim README.md
```

```README.md
# hello-git
## what is it?
これは、Gitの練習用のリポジトリです。
```

ここまで書いたら、次のコマンドを打ちます。

```bash
git add README.md
```

これで、READMEを書いたという変更をgitに教えることができました。
これは、GitHubにPushすることになる、箱にREADMEの変更を入れた、というイメージを持っていただければと思います。

ちなみに、

```bash
git add -A
```

と指定すると全ての変更がaddされます。

## 変更をcommitしよう
さて、先ほど変更の内容を箱に入れましたが、このままではほかの人が見たときに変更の内容が分かりにくいですよね。
と、いうわけで内容をわかりやすくするために箱にラベルを張りましょう(commit)
次のコマンドを打ちます。

```bash
git commit -m'add README'
```

-mの後の文字列は変更の内容を示します。自由に記述できますが、できればわかりやすい記述を心がけましょう。

また

```bash=
git commit
```

で過去のcommit履歴がデフォルトのエディタで開かれます。

## 変更をpushしよう
最後に、変更の内容をみんなと共有するために、変更を詰めた箱を中央リポジトリまで発送します。(push)
その前に、gitにpush先のリポジトリを教えてあげましょう。

```bash
git remote add origin http://github.com/ユーザー名/hello-git
```

のように指定します。
これは、リモート(遠隔)リポジトリの一つにoriginという名前でリンク先のリポジトリを追加するということです。

次に、指定したリポジトリにpushしましょう

```bash
git push -u origin master
```

初回のみ先のリポジトリにmasterというブランチを作るために -uをつけます。二回目以降は不要です。
これで、GitHubにREADMEが追加されました。

## ブランチって？
ところで、先ほどさらっとブランチという言葉をだしましたが、これはいったい何でしょうか？
ブランチというのは「枝」を意味する単語で、その名のように<b>元のリポジトリから枝のように分岐した変更</b>というイメージになります。
ちなみに初期の状態だとmasterのみになります。
言葉だけだとわかりにくいので、実際に作って試してみましょう。
次のように打ちます。

```bash
git branch develop
```

これで、developという名前のブランチが手元に作成されました。
では、そのブランチに入ってみましょう。

```bash
git checkout develop
```

これでdevelopブランチの中に入れます。
現在はmasterブランチから分岐しただけなので特に変わったところはありません、では次にREADMEに変更を加えてみましょう。

```README.md
# hello-git
## what is it?
これは、Gitの練習用のリポジトリです。
## develop
これはdevelopで加えた変更です。
```

これを先ほどのようにcommitしてpushします。

```bash
git add README.md
git commit -m'add line4-5'
git push -u origin develop
```

GitHub側にはまだdevelopブランチがないので今回もuをつけます。
すると、GitHubにdevelopというブランチが新たに作成されて、その中に今回の変更分が記述されているでしょう。
実際の開発では、例えば新機能を実装したりするときは、本番のブランチの内容に影響を与えないよう、一度ブランチを分けてから変更を管理するのが一般的です。
また、作った変更をmasterと統合したいときは、masterに戻ってから

```bash
git merge develop
```

と打つとdevelopの内容がmasterに統合されます。

## おわり
いかがだったでしょうか(アフィブログ)
この記事を読んでGitの基本的な使い方を知っていただけたら幸いです。
Gitにはほかにもたくさんの便利な機能があるので、時間のある時にそれらの機能の解説もできたらと思います。
ありがとうございました。