GitHubの使い方（初心者向け）


## GitHubとは？
まずGitとGitHubは同一のものではありません。
Gitがソースコードのバージョンを管理するシステムに対しまして
GitHubはリモートサーバーをブラウザで閲覧するために存在するツールです
よって、GitHubを使わずともGitのみを使うことも可能です


## 新しいリモートリポジトリを作成します

1. GitHubにログイン後、画面右上に存在するプラスマークのボタンを押します
    ![スクリーンショット 2022-10-02 20.49.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/e26fcd1f-73f1-4544-999f-d9c2d1364ae5.png)


1. New repository　より新しいリポジトリ（貯蔵する場所）を作ります
    ![スクリーンショット 2022-10-02 20.54.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/0cf7c8bb-6bba-8399-3a73-6c031567a568.png)

    
    
1.  リポジトリの名前を入力します
    ![スクリーンショット 2022-10-02 20.56.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/11b677cf-60df-d119-2d3f-8897d0a60fa6.png)

1.  アクセス権を設定します（pulic＝全世界公開　　private=非公開)
    ![スクリーンショット 2022-10-02 21.03.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/d37c8f3b-fce6-6869-62bc-e900fe372714.png)

1.  create repositoryでリポジトリを作成します
    ![スクリーンショット 2022-10-02 21.05.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/7d5c4648-afc0-e291-995a-6c977e77c1e1.png)


## GitHubのリポジトリーをクローン（コピー）します

Gitのクローン（コピー）とはリポジトリの内容をコピーを取るという意味です
今回はGitHubのリポジトリをコピーしますが、対象が別のローカルリポジトリでも可能です

1. クローンの対象となるGithubのリポジトリから`SSHのURL`をコピーします
    ![スクリーンショット 2022-10-03 7.43.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/6bbbc2c8-7202-5c69-e9d7-b357690c4a23.png)

    1. コマンドで`git clone にURLを貼り付けて`実行します 
       GitHub（リモート）に存在しているリポジトリが、ローカルリポジトリにコピーされます
    ```
    $ git clone URL
    ```
## Gitのローカルリポジトリへ登録する

 - カレントディレクトリをワークツリー（対象のディレクトリ）に変更し
    `git add`することで、ステージ（ローカルのgit)に登録されます
 - GitHubに登録するファイルやディレクトリを選択することができます

```
    git add .
    //もしくは
    git add ファイル名
    
    //　”.” = カレントディレクトリ内の全てのファイル、ディレクトリを対象にとります
```

- 実行した場合、緑色になっているファイル名およびディレクトリ名が
    ローカルのGitで管理されている状態（ステージング）になります

![スクリーンショット 2022-10-07 15.06.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/094260c9-f8a6-9c59-5d55-b2dbf967717f.png)

- `git commit -m`　を実行することでステージングからリポジトリへ保存することができます

```
     git commit -m "〇〇を変更しました など"
    //共有しやすいように変更に対するコメントは記述する必要があります
```

![スクリーンショット 2022-10-07 15.06.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/8b9e0268-b910-cafa-5c70-0beae53bb508.png)

- ローカルリポジトリの情報とワークツリーの内容が異なる状態か判断したい場合は
　`git status`　を実行することで確認できます


```
    git status
```
- 情報が異なる場合は対象ファイルに対して`modified`が表示されます

![スクリーンショット 2022-10-07 15.59.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/45094bfd-0d96-87dd-e7e9-47e4a90550f7.png)

- この状態で`git add`　を実行すれば
ローカルリポジトリと相違のある情報のみステージングされます
(コミットを待機する状態）
```
git add .
```
```
git status
```
![スクリーンショット 2022-10-07 16.09.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/7e3d730d-2fd9-d32c-8a4c-995ea500453c.png)

- この状態でgit commit -m を実行した場合
```
 git commit -m "〇〇も変更しました　２回目です"
```
- ステージングされていた情報がローカルリポジトリにコミットされます
 ![スクリーンショット 2022-10-07 16.16.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/bfa5999a-606d-9d3c-e889-b5d020691919.png)


- これまでのコミット履歴は`git log`で確認できます

```
$ git log
```
- 誰がいつ、どのファイルを編集したかなどの情報が表示されます

![スクリーンショット 2022-10-07 16.18.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/49f228ac-9bee-d761-d1fd-a1cd8c15cb13.png)

## GitHubのプッシュ先を設定する

- 次のコマンドを実行することでプッシュ先のリモートリポジトリを指定できます
```
git remote add origin <URL>
```
- URLはGitHubのサイトからSSHのURLをコピーして貼り付けします
![スクリーンショット 2022-10-03 7.43.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/c6d484d6-403c-3c67-0600-ffe17df01752.png)



## GitHub（リモート）にアップロードする

- `git push`を実行することでリモートにアップロードができます

```
    $ git push origin
    //　”origin”はリモートサーバーを指します
```

### もしも次のようなエラーが発生した場合

```
    fatal: The current branch main has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin main


//訳
//現在のブランチのメインには上流のブランチがありません。
//現在のブランチをプッシュし、リモートをアップストリームとして設定するには、次を使用します
//git push --set-upstream origin main
```

- `git push origin`だけではGitHubへpushすることができないことを指しています。
- 現在の作業ブランチにリモートリポジトリのブランチ（上流ブランチ）が無いためです

上流ブランチの紐付けは次のコマンドで確認できます

```
$ git branch -vv
```
- 上流ブランチが`main`であることが確認できます

![スクリーンショット 2022-10-07 22.12.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/eb6ca92e-e318-9c1c-1607-eab849b0b1f9.png)

- GitHubにpushしたい場合はよって今回の場合は上流リポジトリ名を追記する必要があります
- コマンドを実行する場合、SSHのパスフレーズが求められる場合があります

```
$ git push origin main
```

- 上流ブランチを省略できるよう恒久的に設定する方法がエラーにも表示された以下のコマンドです
- コマンドを実行することで`git push`のみで上流ブランチに対してpushができるようになります

```
git push --set-upstream origin main
// または
git push -u origin main
```

- `push`に成功するとブラウザのGitHubにpushした内容が表示されています

![スクリーンショット 2022-10-07 22.26.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/8a75b23f-d4aa-4de3-0b05-edb409ba17a0.png)