Gitを学ぼう！【2章】

今回も「Gitを学ぼう！【1章】」に続き、Gitについての記事を書いていきたいと思います。
私自身のアウトプットの場となりますので、よろしくお願いいたします。

#学習内容について
・リモートリポジトリでのGitの基本コマンドを理解する。
・リモートリポジトリにPC上の変更をアップロードする。

#前提条件
GitHubでNew repositoryを選択してリポジトリ名を入力し、「git-practice」という名前のリポジトリを作成しておきましょう。このリポジトリを使った複数人で行う開発（チーム開発）でよく使うコマンドを学んでいきます。

##ローカルリポジトリとリモートリポジトリを紐付ける
まずは、前提条件で作成したリモートリポジトリを、ローカルリポジトリと結びつけます。
結びつけるには、2つの方法があります。

**1.リモートリポジトリを複製（clone）して、ローカルリポジトリを作成する。**

**2.ローカルリポジトリを作成してから、リモートリポジトリにpushする。**

本章では、2の方法を実施します。 

それでは実際に作業を行いたいと思います。
mkdirコマンドで作業用ディレクトリを作成し移動します。
作成を行う前にpwdコマンドでデスクトップにいることを確認して行うよう注意してください。

```ruby:ターミナル
$ mkdir git-practice
$ cd git-practice
```

git initコマンドでgit-practiceをローカルリポジトリとして登録します。

```ruby:ターミナル
$ git init
```

git initすることでgit-practiceをローカルリポジトリとして登録します。
git-practiceの中に.gitという隠しディレクトリが作成されます。
.gitの中には、リポジトリに必要なファイルが格納されています。

ls -aコマンドで.gitディレクトリがあるか確認しましょう。

```ruby:ターミナル
$ ls -a
```

次にローカルリポジトリとリモートリポジトリの紐付けを行います。

```ruby:ターミナル
$ git remote add origin リポジトリURL
```

リポジトリURLにはリモートリポジトリとして登録したいGitHubのリポジトリのURLを指定します。
GitHubのリポジトリの画面(https://github.com/*****/git-practice) を開くと、HTTPSとSSHがありますが、今回はSSHを選択します。

ローカルリポジトリとリモートリポジトリの紐付けができているか確認しましょう。

```ruby:ターミナル
$ git remote -v
origin    git@github.com:ユーザ名/git-practice.git (fetch)
origin    git@github.com:ユーザ名/git-practice.git (push)
```

紐付けができていれば上記のように表示されます。

##ローカルリポジトリとリモートリポジトリの紐付けを変更する場合
補足ですが、紐付け時にスペルミスをしてしまった場合などは下記コマンドで紐付け変更を行うことができます。

```ruby:ターミナル
$ git remote set-url origin リポジトリURL
```

##ローカルの変更をリモートリポジトリにアップロードする
ローカルリポジトリとリモートリポジトリの紐付けはできました。実際にローカルリポジトリに変更を加えてリモートリポジトリに反映させてみましょう。

README.mdファイルを作成し、適当な（ここではtestとします）文字列を記述します。

```ruby:ターミナル
$ echo "test" >> README.md
```

git-practiceディレクトリにREADME.mdというファイルが作成されました。
作成したREADME.mdをインデックスへ追加します。

```ruby:ターミナル
$ git add README.md
```

次にREADME.mdをコミットします。

```ruby:ターミナル
$ git commit -m "Commit1"
[main (root-commit) 403ee24] Commit1
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
```

最後にリモートリポジトリへ反映させます。

```ruby:ターミナル
$ git branch -M main
$ git push -u origin main
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 249 bytes | 249.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:ユーザ名/git-practice.git
 * [new branch]      main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
```

##ブランチを作成する
ブランチを作成して履歴の流れを分岐して記録できるようにします。
分岐したブランチは、他のブランチの影響を受けないため、同じリポジトリ内で複数の変更を同時に進めることができます。

```ruby:ターミナル
$ git branch ブランチ名
```

「ブランチ名」の部分には、作成したいブランチの名前を指定します。

それでは実際にtest1という名前のブランチを作成します。

```ruby:ターミナル
$ git branch test1
```

ブランチを確認してみましょう。 オプションを付けずに次のコマンドを実行すると、ブランチの一覧を表示することができます。

```ruby:ターミナル
$ git branch
* main
  test1
```

ブランチの一覧が表示され、test1が存在することが確認できました。

##ブランチの切り替え
ブランチの一覧を見ると、mainブランチに*が付いているのがわかります。 この*は、現在参照しているブランチを示しています。
ブランチを作成するだけでは元のブランチを参照している状態のままなので、ブランチを切り替える必要があります。

```ruby:ターミナル
$ git checkout test1
Switched to branch 'test1'
```

もう一度、ブランチを確認してみます。

```ruby:ターミナル
$ git branch
  main
* test1
```

main横にあった*がtest1に移動し、test1ブランチに切り替わったことを確認できます。

##ローカルの変更をリモートリポジトリにアップロードする

ブランチの準備ができたので、実際に変更してGitHubにアップロードしてみます。
ローカルリポジトリの変更履歴をリモートリポジトリへアップロードするには、次のコマンドを実行します。

```ruby:ターミナル
$ git push origin test1
```

これでtest1ブランチがリモートリポジトリにアップロードされました。

以上が今回の内容になります。
最後までご覧いただきまして、ありがとうございました！