---
# System prepended metadata

title: Git講習会

---

# Git講習会

## いるもの

+ PC
+ ネットワーク環境

## Gitを始めよう

+ インストールしていない人
　https://git-scm.com/downloads にアクセスして自分のOSに合わせてインストールしましょう。

+ インストールしている人
　ターミナル(プロンプトなど)か、Git Bashを開いておきましょう。
　ターミナルの場合は
```Bash
    $ git --version
```
　とたたいて使えることを確認しましょう。
　インストールした人もこの作業を行い確認しておいてください。

## Tutorial#1 Hello,World!

~~残念ながらHello,World!はできません。~~
　まずGitの機能を使いたい場合、そのディレクトリをGitの管理下に置く宣言をします。初期化と呼ばれる作業になります。
　以下のコマンドをたたきます。(あくまで参考です。ディレクトリは自分の好みで変えましょう。)
```bash=
$ cd git
$ mkdir test
$ cd test
$ git init
```

　これで、~/git/testはgitに認識され、ファイル管理ができるようになりました。

## Tutorial#2 ファイルを追加、コミットしよう
　gitを使うと嬉しいことは、**歴史を記してくれる**事です。
例えば、
+ 締め切りギリギリになってファイルが消える。
+ 大幅に変更したけどバグが出てしまって戻したいけどどう戻すのかを忘れてしまった

等のトラブルを防ぐことができます。

 では早速歴史を記していきましょう。
 ここでは本番.txtを追加したという記録を残す作業をします。
```bash=
$ vim 本番.txt //本番.txtを新規作成して保存したとします。
$ git add 本番.txt
$ git commit -m "本番資料完成"
```
それぞれ説明すると、
+ `git add <file name>`
　gitに編集した差分のあるファイルをステージに上げる作業です。
　ステージとは、gitが変更のあったファイルの差分を一塊にする場所で、そこに差分を保存することを「ステージング(staging)」と言ったりします。
　この作業は、次に行うコミットという作業を行うときに、変更の趣旨が違う差分のあるファイルを別々にして歴史に残す、ということができます。
+ `git commit -m "<commit message>"`
　gitがステージに上がっている変更された差分を反映し、gitに記録します。(変更の保存)
    + `-<option>`
    は、コマンドに細かい注文を付けることができ、ここで`-m`は「保存する変更についてのメッセージを付ける」というオプションです。

では、実際にファイルを作ってgitでコミットしてみましょう。
次のようなファイルを作りました。~~(内容は正直どうでもいいです)~~
```txt
こうよう祭展示 {
  name : "computer club",
  place : "room 121",
  club : "computer club",
  contains : ["genkai shiritori",
              "numeron",
              "style measure",
              "procon intro"]
}
```
これは`festival.json`という名前でファイルを作ったとして、コミットをします。

```bash=
$ git add festival.txt
$ git commit -m "add festival.txt"
```
これで「festival.txtを追加した」というメッセージ付きで、変更が保存されます。

## Tutorial#3 コミットを取り消そう

納期当日(！？)にファイルが消える、そんなことってありますよね。
でもgitなら大丈夫です。コミットの記録を残しておけば、そのコミットまでさかのぼってファイルを戻すこともできます。
先ほど作った`festival.txt`を削除して、元に戻す、という作業をしてみましょう。
```bash=
$ rm -rf festival.txt //ファイルを削除
$ git reset
```
　`git reset`は、さまざまなオプションがありますが、何もオプションをつけない場合は、ステージに上がっていない差分を取り消して反映するというコマンドです。
　オプションを付けると例えばコミットを消したり、特定のコミットまでの状態に戻したりなどができます。
 
　例えば、最新のコミットを取り消して一つ前の状態に戻したい場合は、
 `git reset --soft HEAD`
 を実行しましょう。
 
## Tutorial#4 ブランチで作業を分割しよう

　一つのプロジェクトには、様々な実装があります。標準的なWebアプリだと、大まかに分けてもフロント、バック、インフラなどそれぞれの実装があり、作業をコミットで管理したとしても、
 フロントの実装、バックの実装、インフラの実装を一つ一つ終わらせるのは、一人ではともかく、大人数での作業になると難しくなり、コミットの記録でも見づらくなります。


 そこで、行う作業によって記す場所を分けて、それぞれで管理することで、作業の記録を時系列、テーマに分けて行うことができます。それが`branch`と呼ばれるものです。
 
 また、共同で行うときに、自分が行いたい作業を行う場合、ほかの人の作業に支障が出ないようにブランチを増やすことを「ブランチを切って作業する」などとも言います。
 
 ここでは先ほど作った`festival.txt`に内容を追加するブランチを作ってそちらで作業する、という流れを行います。
 ```bash=
 $ git branch liveCode //branchの作成
 $ git checkout liveCode //作業を記録する場所をliveCodeに移動
 ```
 これで、作業場所をもといたbranch（ここでは`master`）から`liveCode`に移動することができたはずです。
 確認のため、`git branch`と入力して、
 ```bash=
 master
 *liveCode
 ```
 と表示されるはずです。
 