GitHubでリモートリポジトリの初期設定をする手順

#環境
Ubuntu20.04として話していますが、ほかのOSでも対応できます。

#リモートリポジトリとは？
・自分自身が操作している環境（localhost）に対して、Web上に存在するディレクトリのこと。
・GitHubだけと思いがちだが、Herokuなどにディレクトリを置いた場合も「リモートリポジトリ」と呼ぶ。
・リモートリポジトリはURLで示され、後述する下記のコマンドで、確認できる。

```
$ git remote -v
origin  https://Ryo-Sakon:token@github.com/Ryo-Sakon/example.git (fetch)
origin  https://Ryo-Sakon:token@github.com/Ryo-Sakon/example.git (push)
```
なおtokenの部分は、以前はpasswordでもOKだったが、2021年8月13日以降はtoken推奨となっている。（[公式ブログ記事](https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/)）
tokenの発行方法はこちら（[個人アクセストークンを使用する](https://docs.github.com/ja/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token)）

#手順
※GitHubのアカウント作成手順はチュートリアルが豊富にあるため省略します。

・リポジトリ一覧の画面に行き、「New」をクリック。（緑色のボタン）
・リポジトリ名をつけ（ここではexampleとする）、登録すると下記の画面となる。（Public指定、チェックボックスは入れなくてOK）
・この画面には、ローカルとリモートリポジトリである「example」をつなぐためのチュートリアルが書かれているので、これに従って行うとよい。**（commitやpushも行えるので、とてもよいチュートリアルだと思います。）**
・SSH接続は今回取り扱いません。よくわからない人はスルーして大丈夫です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/852882/0ac9521a-10e2-b42e-aa32-3609a59483e7.png)

チュートリアル通り、下記のコマンドを実行していきます。
※一部、あえて順序を変えています。**また☆は、基本的に最初のみ実行するコマンドです。**

```
git config --global user.name "Ryo-Sakon"
git config --global user.email "hogehoge@hoge.hoge" // ☆~/gitconfigに設定を書き込み
(cd /var/www/html/example/) //Linuxのみ

git init //☆ローカルリポジトリの初期化。おまじないのようなもの
echo "# example" >> README.md //テストファイル作成。touch+vim,nanoなどでもよい
git add README.md //ステージング
git commit -m "最初のコミット" //コミット。-mはメッセージ内容
git branch -M main //ブランチの作成
git remote add origin https://github.com/Ryo-Sakon/example.git //☆プッシュ先のリモートリポジトリを指定する
git push (-u origin main) //☆プッシュ。２回目以降は()内がなくてもOK
```


#もしエラーが起きてしまったら？
・下記の２ファイルのどちらかに原因がある可能性がありますので、確認してみてください。
・~/gitconfig
・/var/www/html/example/.git/config


#実際に起きたエラー紹介

```
$ pwd //ディレクトリ確認
/var/www/html/example
$ git push -u origin main
remote: Permission to Ryo-Sakon/example.git denied to sakon-hogehoge.
fatal: unable to access 'https://github.com/Ryo-Sakon/example.git/': The requested URL returned error: 403
```




・私は「sakon-hogehoge」という別のアカウントを持っているのですが、なぜかそちらのアカウントでPushを行うようになっていました。（ちゃんとgit config --global user.name　したのに…）
このとき、/var/www/html/example/.git/config を編集することで解決しました。

```
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = https://github.com/Ryo-Sakon/example.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
        remote = origin
        merge = refs/heads/main
```

url = https: //github.com/Ryo-Sakon/example.git
の部分を
url = https: //Ryo-Sakon:token@ github.com/Ryo-Sakon/example.git
とユーザーを明記するように変更すると、正常にPushできました。しかし、tokenの期限が切れるたびに同じ作業が必要になるのが今のネックです…。


#参考：SSH接続の設定

```
鍵を作成
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -f authorized_keys
```
・authorized_keysは変えてOK
・-t　RSAは暗号手段の名称
・-b　バイト数
・-f　鍵の名前

##生成した公開鍵をGitHubに登録する
・https://github.com/settings/keys　にアクセス
・画面右上の「New SSH key」ボタンを押す
・Title欄に公開鍵名（.pub）、Key欄に公開鍵の中身をペースト
・ボタンを押して登録

##エラーへの対処（WSL2）
```
Warning: Permanently added 'github.com,52.192.72.89' (RSA) to the list of known hosts.
git@github.com: Permission denied (publickey).
$ eval `ssh-agent`
$ ssh-add ~/.ssh/authorized_keys
```

参考URL
https://qiita.com/y-tsutsu/items/ec984831e6c8262d3ff7

#終わりに
以上でチュートリアルは終了です。この後は「Pull」,「Merge」,「Conflict」などを覚える必要があります。
また、「VSCode」などのエディターで開発を行っていくことになります。当然各々の言語で開発するわけですが、GitHubに限らず、公式ページには意外とやさしく説明が書かれていますので、ググる前に公式ドキュメントをぜひ読んでみてください！
応援しています！