GitとGit Hub 入門(1/3)

# Gitとは
ソースコードのバージョン管理を行うためのソフトウェアです。複数人でシステム開発するときには、ソースコードの変更管理は必須です。変更管理しないと、どのソースコードが最新なのか、どんな変更が入っているのか分からなくなって大変です。

そんな変更管理を簡単にできる仕組みがGitです。Gitでは「リポジトリ」という保管場所を作成し、その配下にファイルやディレクトリを置くことによって、配置されたディレクトリやファイルの変更履歴を記録することができます。

あのLinuxの創始者であるLinusさんが開発したそうです。また、現在のメンテナはなんと日本人で、濱野純さん（[こんな方](https://gihyo.jp/dev/serial/01/alpha-geek/0040)）。

# Git Hubとは
Gitを世に知らしめたウェブサービス。GitHub社が運営。[^1]
クラウド上でGitの「リモートリポジトリ」(後述)を提供することにより、地理的に離れた場所でも一緒に開発することが可能になりました。

# 他のGitのホスティングサービス

実はGitを使えるサービスは他にも存在し、Attlasian社のBitbucket、クラウドではなく自社サーバーでGitの環境を構築できるGitLabなどもあります。[^2]

[^1]: 2018年にマイクロソフト社がGitHub社を買収したが、独立企業として維持されているとのこと。
[^2]: [参考になるサイト](https://tracpath.com/works/development/git-hosting-service/)

# GitとGitHubを使ってできること
自分のPCにGitで「ローカルリポジトリ」を作成し、ソースコードの変更を管理します。
Git Hubに作成するリポジトリは「リモートリポジトリ」と呼び、ローカルリポジトリからリモートリポジトリにソースコードをアップロードすることで他の人にソースコードを共有することができます。
![Untitled Diagram (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386017/b8e7dd11-ebc3-283c-b84a-251e921df982.png)


# Gitのインストールと初期設定
それではまず、Gitの方から設定していきましょう。

## 環境
Mac

最初からインストールされているはずですので
下記のコマンドでバージョンが表示されることを確認しましょう。

```bash
$ git --version
```

## 最初にやること

プロフィールを設定します。（Git Hubで公開されても問題ない内容にすること）
`--global`オプションは、~/.gitconfigを変更するのに必須のオプション。[^3]
[^3]: gitの設定ファイルはいくつかあって、git configのオプションで何のファイルを変更するかが変わります。例えば、`--system`オプションをつけると`/etc/gitconfig`（システム上の全ユーザーの設定ファイル）を変更します。

# 
```bash
$ git config --global user.name "your name"
$ git config --global user.email "your@email"
```

設定ファイルが更新されます。

```~/.gitconfig
[user]
        email = your@email
        name = your name
```

コマンド出力を色をつけて見やすくしましょう。

```bash
$ git config --global color.ui auto
```
設定ファイルが更新されます。

```~/.gitconfig
[user]
        email = your@email
        name = your name
[color]
        ui = auto
```
# Git Hubの設定
Git Hubでアカウントを作成しましょう。

https://github.com/

アカウントにログインできたら、リモートリポジトリを作成します。

<img width="1106" alt="GitHub_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386017/30d69b01-2968-6446-99d6-2f6bc126677b.png">

リポジトリ名などを設定していきます。
<img width="847" alt="Create_a_New_Repository.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386017/9897dc09-d412-9fa8-f3d0-00ac08c90de4.png">

作成できました。
<img width="1092" alt="sample.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386017/b88534dc-4109-9c40-3742-152605849b70.png">

## Gitでローカルリポジトリを作成する
Macで、先ほどGit Hubで作成したリポジトリ名と同じ名前のディレクトリを作成して、そのディレクトリ内で`git init`を実行します。

```bash
$ mkdir sample
$ cd sample
$ git init
```
`git init`を実行すると、`.git`ディレクトリが作成されます。
`ls -la`で`.`(ドット)から始まる隠しディレクトリも表示できます。

```
$ ls -la
drwxr-xr-x   3 hoge  staff   96 10 12 14:08 .
drwxr-xr-x  17 hoge  staff  544 10 12 14:06 ..
drwxr-xr-x   9 hoge  staff  288 10 12 14:44 .git
```
## リモートリポジトリの設定
ローカルリポジトリの設定に、接続先のリモートリポジトリを設定します。
まずは、リモートリポジトリのURLをコピーします。

<img width="1119" alt="sample2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386017/680ea39f-eb36-315f-98dc-d9f02f6f3ad3.png">

先ほど作成したローカルリポジトリ内で、次のコマンドを実行します。
`git remote add origin`の後ろにリモートリポジトリのURLを入力します。
`origin`とはデフォルトのリモートリポジトリのことです。（他の名前で登録することも可能ですが`origin`とするのが慣習です。）

```bash
$ git remote add origin https://github.com/hoge/sample.git
```

.gitディレクトリ配下にあるconfigファイルにリモートリポジトリのoriginリポジトリの設定が追加されています。

```ローカルリポジトリ/.git/config
[remote "origin"]
        url = https://github.com/hoge/sample.git
        fetch = +refs/heads/*:refs/remotes/origin/*
```

# 続きはこちら
[GitとGit Hub 入門(2/3)](https://qiita.com/maruuuuu/items/bf50f9290e277c2fce3e)
[GitとGit Hub 入門(3/3)](https://qiita.com/maruuuuu/items/8d1867f1e4aad21690c6)