Gitの使い方

Gitについて勉強したため、まとめたものを投稿します。
簡単なものやよく使うものをまとめてます。

## Gitとは何？
Gitとはバージョン管理システムのことで、ファイルのバージョン管理を簡単に行うことツールです。
バージョンというのは、ファイルの更新したり、変化させたものをになります。
Officeを使う人でよく
* 〇〇設計書_20220511.xlsx
* ××報告書_v2.xlsx

のように日付をファイル名に入れたり、v2みたいな名前にして過去ファイルはバックアップとしてoldフォルダに入れるって
ことをしているかと思います。
ただ、この場合だと複数人で1つのファイルを更新すると誰がどこを更新したかがわからなくなります。
特にGitは、複数人で開発する時に使用されます。
（Googleのスプレットシートだと誰がどこを修正したかが出ていいですよね。
その代わり間違えたこと書くと犯人がすぐわかりますが、、、）

Gitを使用することで複数人で1つのファイルを更新することができ、
過去のファイルに戻すことができます。

## GitHubとGitLabの違いについて
コードを管理するのにGitHubとGitLabが存在します。
こちらは、両方ともコードをリモートリポジトリに格納するものですが、
公開範囲と準備するものが異なります。
使用用途として以下のイメージです。
* GitHub：一般ユーザー向けで、インターネットに公開することができる。
* GitLab：業務向けで、社内サーバ−に配置することでインターネットには公開されない。

## ローカルリポジトリとリモートリポジトリについて
ローカルリポジトリとは、その名の通りローカル環境に存在するリポジトリのことです。
ローカル環境とは、現在使用しているサーバーやPCのことです。
ローカルリポジトリにファイルやファイル更新履歴が入ります。

リモートリポジトリは、GitHubなどにソースコード情報を保管し、インターネットに公開などしてます。
リモートリポジトリにソースコードを格納するには、ローカルリポジトリを作成し、リモードリポジトリへアップロードします。

## よく使うgitコマンド
よく使うgitコマンドを記載します。

### git close
リモートリポジトリから自身の端末へファイルをコピーします。
以下のように実行します
```
$ git close <対象URL>
```
対象URLはGitHubから以下リポジトリ画面から取得できます
![スクリーンショット 2022-05-12 22.17.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2281678/ed22e3bb-4a93-f07f-3e9e-47556811b46b.png)

### git init
ローカルリポジトリを作成します。
Gitを使用する際、まずはこのコマンドを実行します
```
$ git init
```

### git add
ファイルを更新したら、まずインデックスに追加して、コミット対象にします。
以下でカレントディレクトリ内のファイル、ディレクトリをコミット対象します
```
$ git add .
```
1つのファイルをコミット対象とする場合はファイル名を指定します
```
$ git add index.html
```

### git commit
履歴情報を保存します。
-mでコメントを残すことができます。
```
$ git commit -m "first commit"
```

### git status
現在のステータスを確認できます
特に更新がない場合は、以下のように表示されます。
```
$ git status
On branch main
nothing to commit, working tree clean
```
ファイルを作成すると変更点があり、git addする必要があることを表示してくれます
```
$ touch test
$ git status
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	test

nothing added to commit but untracked files present (use "git add" to track)
```
git addした後は以下のように表示され、commit予定ファイルが表示されます
```
$ git add .
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   test
```
git commitすると最初の状態の戻ります
```
$ git commit -m "test"
$ git status
On branch master
nothing to commit, working tree clean
```

### git log
変更ログとcommitIDが確認できます
commitIDを確認することでその時の状態に戻すことができます。
```
$ git log
naoki@:~/git_test/test$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   test

naoki@:~/git_test/test$ git commit -m "test"
[master 285d070] test
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test
naoki@:~/git_test/test$ git status
On branch master
nothing to commit, working tree clean
naoki@:~/git_test/test$ 
naoki@:~/git_test/test$ 
naoki@:~/git_test/test$ git log
commit 285d07091f6dea52dd5fb296e68f1fd69d97de8b (HEAD -> master)
Author: UserID <メールアドレス>
Date:   Thu May 12 22:34:26 2022 +0900

    test

commit 9888a3a9cbfb2947c6b6a2084a51965e12e54c68
Author: UserID <メールアドレス>
Date:   Wed May 11 22:04:35 2022 +0900

    ３回目

commit 7ea2edacd09ea23cc224b120f6412574d5d89078
Author: UserID <メールアドレス>
Date:   Wed May 11 22:03:56 2022 +0900

    2回目のcommit

commit 2b5ac10b0320d780b34fcee44584fef533adac1a
Author: UserID <メールアドレス>
Date:   Wed May 11 22:02:30 2022 +0900

    新しいファイル
```
### git push
GitHubにファイルをアップロードします
アップロードする前にリモートリポジトリを```git add remote origin <登録したいリポジトリのURL>```で登録します。
```
$ git add remote origin <URL>
$ git push origin main
```
### git checkout
commitIDを指定することでその時の情報を戻すことができます。
commitIDは```git log```で確認できます。
```
$ git checkout 9888a3a9cbfb2947c6b6a2084a51965e12e54c68
```
また、-b　名前　を入れることでそのブランチを切ることができます
```
$ git checkout -b dev
```
以上になります。
ここまで見ていただき、ありがとうございました！