Gitを思い出すぞよ

## 1.はじめに
Gitの使い方忘れました。なので思い出しましょうね〜って記事です。
大したことはやりませんのでご了承くださいませ！

作業環境は新調したMacです。かっこいい。
ここにGit入れて適当にリポジトリ作ってCloneしたりPushしたりの動作確認ができたらゴールとします。

ちなみに2022年10月にM2搭載したMacが出るらしいです。
ぼくは同年9月に2021年型を購入しました。
大事なことはもっと早く言おうな。

## 2.Homebrewのインストール
Gitを入れるためのHomebrewをインストールします。手順は公式に倣います。

https://brew.sh/index_ja

インストール後にWarningが出たので調べたらパスを通さなきゃダメとのこと。
ググってこの記事通りに手を動かして解消。感謝感謝です。

https://chicog.me/posts/sr4qml2wg

## 3.Gitのインストール
深く考えず勢いで実行。
soshi.satoはユーザー名(本名)でして、`soshi.sato: ~/ %`がプロンプトですね。
以降もこの感じで書いていきます。

```
soshi.sato: ~/ % brew install git
```

なんかSuccess!!!!的なメッセージが出てないですが、インストール完了してました。
Complete云々とは書いてあった。

```
soshi.sato: ~/ % git version
git version 2.37.3
```

## 4.リポジトリの作成

最高に適当なリポジトリを作成。
READMEしか置いてないです。

https://github.com/sosat117/remember_git

## 5.Gitしてゆく

手前味噌ですが自分の記事を見直しつつ手を動かします。
ひどい内容ですが書いた当時の自分を褒めてやりたい。

https://qiita.com/sosat/items/ba46b0de37d2d982843c


### 5-1.リポジトリのClone
ローカルの`~`にCloneします。

```
soshi.sato: ~/ % git clone https://github.com/sosat117/remember_git

```

### 5-2.git statusとかbranchとか

`remember_git`リポジトリにcdして、諸々確認。

```
soshi.sato: ~/ % cd remember_git
soshi.sato: remember_git/ % git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

soshi.sato: remember_git/ % git branch
* main
```

masterじゃなくてmainなのか…？と思いましたが気にしない。

### 5-3.ブランチを切る
名前はなんとなく`main_cron`にしました。
この辺りからあーこんな感じだったなあと思い出してきました、手を動かすのほんと大事。

というか今思ったけどcloneじゃないか？w
おれの英語力。。

```
soshi.sato: remember_git/ % git branch
* main
  main_cron
```

### 5-4.ブランチの切り替え
`git checkout`で先ほど作ったcronに切り替える。

```
soshi.sato: remember_git/ % git checkout main_cron
Switched to branch 'main_cron'
soshi.sato: remember_git/ % git branch
  main
* main_cron
```

ついでにstatusも確認。

```
soshi.sato: remember_git/ % git status
On branch main_cron
nothing to commit, working tree clean
```

### 5-5.テストファイルの追加
viで適当なファイルを追加します。

```
soshi.sato: remember_git/ % vi otameshi_git.txt
soshi.sato: remember_git/ % ls -lha
total 16
drwxr-xr-x   5 soshi.sato  staff   160B  9 28 17:01 .
drwxr-x---+ 22 soshi.sato  staff   704B  9 28 17:01 ..
drwxr-xr-x  12 soshi.sato  staff   384B  9 28 16:58 .git
-rw-r--r--   1 soshi.sato  staff    63B  9 28 16:41 README.md
-rw-r--r--   1 soshi.sato  staff    49B  9 28 17:01 otameshi_git.txt
soshi.sato: remember_git/ % cat otameshi_git.txt
This file is otameshi-text.
written by ssato117.
```

### 5-6.ステータスの確認
赤いです。

```
soshi.sato: remember_git/ % git status
On branch main_cron
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	otameshi_git.txt

nothing added to commit but untracked files present (use "git add" to track)
```

### 5-7.git add
addします。今回はファイル名決め打ちで。
流れでstuatusも。緑です。

```
soshi.sato: remember_git/ % git add otameshi_git.txt
soshi.sato: remember_git/ % git status
On branch main_cron
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   otameshi_git.txt
```

### 5-8.commit
commitしたのはいいのですが、

```
soshi.sato: remember_git/ % git commit -m "add otameshi_git.txt"
[main_cron 1d319fc] add otameshi_git.txt
 Committer: soshi.sato <soshi.sato@soshisatonoMBP.usen.ad.jp>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:

    git config --global --edit

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

 1 file changed, 2 insertions(+)
 create mode 100644 otameshi_git.txt

```

`soshi.sato@soshisatonoMBP.usen.ad.jp`これダサすぎませんかねw
問題が1つ増えてしまった。。

あ、commitは-mのメッセージはいつも`add`とか`modify`からのファイル名にしてます。
この辺はベストプラクティスがあるはず。いつかググります。

statusも確認。綺麗になってますね！

```
soshi.sato: remember_git/ % git status
On branch main_cron
nothing to commit, working tree clean
```

### 5-9.push
なんか出た。

```
soshi.sato: remember_git/ % git push origin main_cron
Username for 'https://github.com': sosat117
Password for 'https://sosat117@github.com':
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/sosat117/remember_git/'
```

パスワード認証は去年の8月に終わっとーわ！！！！！とのこと。
公式にも思いっきり書いてました。

https://docs.github.com/ja/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls

軽く調べたらキーペア作って認証するっぽいですね。やってみる。

## 6.その前に逸脱してinit
リモートリポジトリをCloneしたり、ローカルリポジトリをinitしたり、やり方はいろいろあるかと。
ただ個人的にinitって使ったことほぼ無いのでやってみました。

### 6-1.git init

めっちゃ黄色。

```
soshi.sato: ~/ % git init remember_git2
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
Initialized empty Git repository in /Users/soshi.sato/remember_git2/.git/

```

.gitファイル込みのディレクトリできててグッときますねw

```
soshi.sato: remember_git2/ % ls -lha
total 0
drwxr-xr-x   3 soshi.sato  staff    96B  9 29 10:40 .
drwxr-x---+ 24 soshi.sato  staff   768B  9 29 10:40 ..
drwxr-xr-x   9 soshi.sato  staff   288B  9 29 10:40 .git
```

ヒントにmaster, mainって書かれてたので調べたら、masterとslaveだと奴隷制度が連想されるからmainに変わったとのこと。共感しかない。

https://parashuto.com/rriver/tools/change-git-default-branch-name

誰かが不快になる可能性があるなら避けるべき、って考えがスタンダードになると良いですね！！

## 7.再びpush
公式を読み進めてるとGUIからトークンを作成できるとのこと。

超わかりやすい手順通りにトークンを作成。

https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token

このトークンをPasswordに入力し成功！やったぜ！！

```
soshi.sato: remember_git/ % git push origin main_cron
Username for 'https://github.com': sosat117
Password for 'https://sosat117@github.com':
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 347 bytes | 347.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'main_cron' on GitHub by visiting:
remote:      https://github.com/sosat117/remember_git/pull/new/main_cron
remote:
To https://github.com/sosat117/remember_git
 * [new branch]      main_cron -> main_cron
```

GUIを見ると切ったブランチが追加されてます。バッチリ。
プルリクはなんとなく想像つくのでやりません。

## 8.逸脱その②　DS_Storeについて
Macからpushするとよく`.DS_Store`も一緒にupしちゃってたの思い出しました。
ただcloneしてきたローカルリポジトリ、initしたローカルリポジトリどちらにも存在しないんですよね。

ただホームディレクトリとかにはよっ！！て感じで普通にいるので、何かしら変わったのかな…？
今回はDS_Storeってなんじゃい＆消し方の調査に留めておきます。

https://ios-docs.dev/ds_store/

## 9.おわりに
やっぱり手を動かしてると連動して記憶も蘇ってきますね。あとGithubの進化スピードはやっぱり早い。
センシティブな箇所も改善されたりしてて、ますますこのサービスが好きになりました。

また、先人の先輩方のブログにもたくさん助けられました。この場を借りてお礼申し上げます！
やっぱりエンジニアの集合知は最高だぜ。

コンフリクトとかまだわからないことも多いので、引き続きGit道を邁進してくぞー！！

## 10.追記
ファイルを削除する時はrmじゃなくて`git rm`を使う。
戸惑いました。。w


以上です。
この記事がどなたかのお役に立ちますように。