Gitコマンドのメモ

# Linuxコマンド

コマンド | 説明 | 備考
--- | --- | ---
ls | 今いる階層のフォルダ・ファイル表示 | -
cd フォルダ名 | フォルダの移動 | フォルダ名/フォルダ名で2つ先のフォルダ移動可能 / codeフォルダのD&Dでの指定も可能
mkdir フォルダ名 | フォルダの作成 | -
rm -fr フォルダ名 | フォルダの作成 | fは強制削除したいときにつけるオプション


# Git/GitHubの初期設定

まず初期設定でuser_nameとemailが設定されているか確認しましょう。

```bash:config設定の確認
git config --list
```

設定されていない場合は下記で設定可能です。

```bash:configの設定
git config --global user.name 'user_name'
git config --global user.email 'email'
```

基本的にはGitHubのレポジトリを作成したときに表示される
下記のコマンドを順に実行したらローカルレポジトリから
GitHubへpushできます。

```bash
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/{user_name}/{repository_name}.git
git push origin main
```

私の環境だとGitHub上のdefaultブランチをmainにしているのですが、
masterブランチに入れようとしてくるので注意が必要です。

上記コマンドの中のこれでdefaultで使用するブランチ名の設定が可能です。


```bash:defaultブランチの設定
git branch -M main
```

このコマンドがなくてmasterをdefaultブランチとして、
pushしてしまうとエラーが起こってしまいます。





## remote: Repository not found.が出る場合の対処法

プライベートと仕事用とで切り替えて使用している場合にでることが多いようです。

### 対処法① パスワード付きで設定

HTTPSで設定している方はリモートレポジトリをパスワード付きで設定すると解決します。

```bash
git remote add origin https://{user_name}:{password}@github.com/{user_name}/{repository}.git
```

### 対処法② SSHで設定をする


SSHの設定方法をお伝えしていきます。
まず、下記コマンドを実行します。

```bash
ssh-keygen -t rsa
```

すると下記が表示されるのでEnterで進めてください。
パスワードは設定しない場合はそのままEnterを押しても大丈夫です。
括弧の中の場所に公開鍵id_rsaファイル作成されます。

```bash
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/{user}/.ssh/id_rsa): 
```


GitHubの`settings` > `SSH and GPG kyes` > `new SSH key`をクリック

Titleは適当に名前をつける。
複数PCで扱っている場合はどのPCからの操作かわかるようにするとよいなかなと思っています。

Keyには先ほど作成された.ssh/id_rsa.pubの内容を全てコピーすれば設定完了です。

リモートレポジトリの設定をSSHへ変更しましょう。

```bash
git remote set-url origin git@github.com:{user_name}/{repository_name}.git
```

もしくは一度削除して再設定してもOKです。
差し替えできるの知らずにずっと削除してから再設定していました。

```bash
git remote remove origin
git remote add origin git@github.com:{user_name}/{repository_name}.git
```


# その他覚えておきたいGitコマンド

## Gitの設定

コマンド | 説明
--- | ---
git --version | バージョンの確認
git config -l | Gitの設定確認
git config --global --list | configの設定確認
git config --global user.name '{user_name}' | ユーザー名の設定
git config --global user.email '{email}' | メールの設定


## GitからGitHubなどへの連携で使用

コマンド | 説明
--- | ---
git init | 初期化 |
git add . / フォルダ・ファイル名 | ステージングを行う |
git commit | コミットを実施 |
git commit -m 'message' | コミットメッセージ付きでコミットを実施 |
git branch -M main | defaultで使用するブランチの設定 |
git remote add origin https://github.git | orignにリモートレポジトリを紐づける |
git remote | リモートレポジトリの確認 |
git remote -v | リモートレポジトリの紐づけ先の確認 |
git remote rm origin | リモートレポジトリの削除 |
git push origin main | originをmainにプッシュ |


## ブランチの作成、切り替え

コマンド | 説明
--- | ---
git branch branch名 | ブランチの作成 |
git branch -D branch名 | ブランチの削除 |
git checkout branch名 | ブランチの変更 |
git checkout -b branch名 | ブランチを作成して移動 |


## 履歴の確認・その他

整理中です。

コマンド | 説明
--- | ---
code . | エディタを開く |
git status | gitの状況を表示 |
git log | コミットの履歴を表示 |
git show | 差分を表示 |
git show tag | タグがついているコミット情報の表示 |
git revert ハッシュ | ハッシュまでcommitを戻す |
git reset --soft HEAD^ | commit自体を取り消す |
git reset --mixed HEAD^^ | commit自体を取り消す |
git reset --hard HEAD~3 | commit自体を取り消す |
git tag v1.0 | タグの設定 |
git tag -a v0.5 ハッシュ ||
git rm ファイル名 ||
git mv ファイル名 フォルダ名||
git merge branch名 ||
git rebase branch名 | 同じ位置まで進める |
git cherry-pick ハッシュ | 部分的にコミットをもらいたいとき |
git diff branch名 branch名 |  |
git clone URL フォルダ名 ||
git fetch  | リモートレポジトリの情報をローカルレポジトリに取り込む |
git pull origin master |  |



## 追加したくないフォルダの設定

.gitignoreファイルにファイル名を追加することによって可能


## upstreamの設定

毎回下記のコマンドでoriginにpushさせるのはめんどくさいと思います。

```
git push origin master
```

その場合にupstreamを設定すると`origin master`箇所を省略し、
下記コマンドで同じ内容が処理されます。

```
git push
```

設定は下記を実行するだけです。

```
git push --set-upstream origin master
```