環境作るのだよ（PUSHするまで）

必要なソフトウェアはインストールが終わったら、次は実際にGitHubにつないでPUSHまでしてみませう。

# salesforce DXの設定
変更セットにはサヨナラしたいので、DevHubつかってDXで開発してパッケージで管理していく。
でもDXがなんなのよって分からないと吐くので勉強する。

Trailheadが実践的で素晴らしいので、以下のトレイルを踏破する。
https://trailhead.salesforce.com/ja/content/learn/trails/sfdx_get_started
とても長い。。。がんばって。

# GitHubへPUSH
ソース駆動開発なのでGitHub（VCS）は避けられない。
よくわかってないけど、まずはGitHubにつないでPUSHするまでを書いておく。
## SSH
SSHもわかってないと辛いことが起きるので最低限これだけはってのを書いておく。
要は秘密鍵と公開鍵つくって、公開鍵をGituHubに、秘密鍵はローカルに置いてセキュリティたけーって事をする。（多分間違ってる）
ちなみにコマンドの実行はコマンドプロンプトかVS Codeのシェルからやってね。

 1. 鍵を作る
.sshディレクトリに移動して鍵作ります。Windowsの方はたいてい"C:\Users\[ユーザ名]\.ssh"です。違ってたら探して。
鍵は`ssh-keygen -t rsa -b 4096 -C "hogehoge@fuga.com"`のように`ssh-keygen`コマンド使います。
オプションは以下の通り。
  * -t : 鍵の種類、ここではRSAを指定
  * -b : 鍵のビット数、4,096桁指定しておけば、まぁ安心
  * -C : コメント、わかりやすいようにコメントいれてもいいけど無くても問題なし。このまま打つとわけわかんないから自分のメアドに変えよう
実行するとこんな感じで応答がある。

Enter file in which to save the key (C:\Users\[ユーザ名]\.ssh\id_rsa): 
（秘密鍵の名前、Enter押してデフォルトにしとく。しないと面倒が起こる）
Enter passphrase (empty for no passphrase): 
（パスフレーズ、空は許しませんので必ず入力を）
Enter same passphrase again:
（もう一度同じパスフレーズを入力）
Your identification has been saved in id_rsa.
（秘密鍵できたよ！ってお知らせ）
Your public key has been saved in id_rsa.pub.
（公開鍵もできたよ！ってお知らせ）

 2. 認証エージェント（SSH-Agent）に鍵登録する
多分登録しなくてもうまくいくと思うけど、念のため登録。
`ssh-add`コマンドを使うのですがWindowsの場合はサービスが死んでるので起こしてあげる必要がある。
  1. cortanaさんに"サービス"を探してもらう
検索ボックスなり話しかけるなりしてサービスを探す。  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/356061/00141ddf-3445-d73c-1742-2a343fcde4ca.png)
  2. サービスが上がったら"OpenSSH Authentication Agent"を一覧から探す
  3. 見つけたらダブルクリックしてプロパティを出して、「スタートアップの種類」を"手動"に変えてOK押す
![image.png](https://qiita-image-store.s3.amazonaws.com/0/356061/536a22b5-5299-8a08-43dd-86c748ccbf32.png)
  4. "サービスの開始"リンクを踏んで"OpenSSH Authentication Agent"を起動する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/356061/589767fb-48b0-d5e3-153f-0701b6d9a9fc.png)
  5. サービス上がったらコマンドプロンプトに戻って、'ssh-add id_rsa'と入力する。

ここままでとりま準備はできたので、次はGituHub側を設定する。

## GitHub
前提としてGitHubにはアカウントがある前提。リポジトリはコラボレーションで招待されてる前提。
アカウント無いっすって場合はこのサイトがとても役にたちます。
https://qiita.com/kooohei/items/361da3c9dbb6e0c7946b
無料プランじゃなくてもいいけど、有料のお金は自腹ね。

 1. ユーザ登録する

gitのユーザ情報を登録してないとなんかうまくいかないので登録しておきます。
`git config --global user.name [あなたの名前]`
`git config --global user.email [あなたのメールアドレス]`

 2. 疎通見る
登録してもらったら疎通できるか見ます。
`ssh -T git@github.com`と入力して"Hi HogeHoge! You've successfully authenticated, but GitHub does not provide shell access."って返ってきたら疎通してます。
HogeHogeはあなたのGitHubでのユーザ名に代わります。
 3. テスト用のファイル作る
まず作業用ディレクトリつくります。適当なディレクトリで`mkdir hoge`とします。
そのディレクトリの中になんでも良いのでファイルを一個つくります。なんでもいいからとどデカい動画ファイルとか入れたら死にます。
 4. 初期化してくれる
初期化してAddしてCommitします。本来は開発したー、人様の変更がーって色々考える場面があるのですが、ここはテストなので一気にやります。
作業ディレクトリ（ここではhoge）に移動して作業です。
まずローカルリポジトリの初期化、`git init`と打って"Initialized empty Git repository in C:/dev/test/.git/"的なメッセージが出れば問題ないです。
 5. addする
ローカルリポジトリに先ほどつくったファイルをAddします。これで管理対象入りです。
`git add hoge.txt`と打つべし。"hoge.txt"は作成したテストファイル名です。
 6. commitする
addしたのでマージしてあげます。
`git commit -m "add new"`と打ちます。-mはコメントをつけるオプションです。
"[master (root-commit) 2532951] add new
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 hoge.txt"
的なメッセージが出れば問題ないです。
 7. pushする
いままではローカルリポジトリで作業してましたがここからはリモートリポジトリへの作業です。
いろいろありますが、とりまPUSH出来たらOKってことで。。。
`git remote add origin git@github.com:hogehoge/test-one.git`と打ち込みます。
（sshのアドレスは偉い人に聞いてね。）
これでリモートと接続してます。`git remote -v`と打つとリモートリポジトリが表示されます。
準備できてのでPUSHします。
'git push origin master'と打ってリモートリポジトリにファイルを反映します。
 Enter passphrase for key '/c/Users/[ユーザ名]/.ssh/id_rsa':
と、聞かれたら秘密鍵を作った際のパスフレーズを入力します。
"Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 321 bytes | 321.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:Eno-Climb/test-one.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'."
的なメッセージが出れば、成功っす。

これで一応の準備はOkっす。

PUSHしたときとかに認証を拒否られる場合があります。
その場合は、
 * id_rsaのファイル名が正しいか確認する（config書かないとデフォでこのファイルを使うので）
 * ちゃんと公開鍵が上がっているか確認してもらう
 * 祈る