Git入門

## :writing_hand_tone1:　概要
エンジニア歴5年目にしてGitを業務で使うのが久々すぎて（産後の物忘れも追い打ちをかけてきて）、使い方を忘れてしまった私ができる限り自分が後から見て理解できるように書いた、Git使う時にこれ見れば完璧に使えるわな記事。（← なのでほぼ自己満です）

## :writing_hand_tone1:　Gitとは
ファイルのバージョン管理をする為のツール。
作業していて変更前の内容に戻したいという時や、複数人で作業をしている時に「このファイルいつ誰が触ったのか知りたい！」という時に便利さがわかります。

参考：[**【絶対理解できる】Gitとは？特徴やできることまとめ！**](https://www.sejuku.net/blog/5756)


## :books:　Gitのあれこれ
こちら、完全に自分用のメモです。

### :star: 基本系
#### ▶︎　ブランチ切りたい
- [**Git ブランチを新規作成・削除する**](https://www.kamo-it.org/blog/git_branch/)
- [**【Git】初心者向け　branchの使い方の勉強**](https://www.kamo-it.org/blog/git_branch/)　← 主な命名規則も載ってる

#### ▶︎　Githubで作成したリポジトリを削除したい
- [**リポジトリの削除**](https://docs.github.com/ja/repositories/creating-and-managing-repositories/deleting-a-repository)

#### ▶︎　リポジトリのクローン
- [**【Git入門】git cloneで既存リポジトリをクローンしよう！**](https://tech-blog.rakus.co.jp/entry/20220624/git)

#### ▶︎ 既存のリポジトリを別リポジトリにコピーしたい
- [**GitHub – 既存リモートリポジトリを別へコピー(複製)・移動する方法**](https://howpon.com/6427)

#### ▶︎　リモートリポジトリを作成したい
- [**GitHub – リモート リポジトリの登録/作成とローカルへの追加方法**](https://howpon.com/4836)

#### ▶︎ 特定のファイル/フォルダを持ってきたい
- [**【GitHub】特定のファイル（ディレクトリ）のみをダウンロードするやり方を解説します**](https://www.tairaengineer-note.com/github-download-specific-file/)
- [**GitHubで一つのファイルだけ持ってくる**](https://tech.kurojica.com/archives/58619/)
- [**もうクローン不要！GitHub から指定したファイル（フォルダ）をダウンロードする方法**](https://www.sukerou.com/2021/11/github.html)　← これめちゃ便利。。

#### ▶︎ （ファイルを残したまま）gitの管理対象から削除したい
- [git rmコマンドを活用しよう](https://www.fenet.jp/infla/column/technology/gitrm%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E6%B4%BB%E7%94%A8%E3%81%97%E3%82%88%E3%81%86%EF%BD%9C%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E4%BD%BF%E3%81%84%E6%96%B9%E3%81%8B%E3%82%89%E5%90%84/)

#### ▶︎ コミットを削除したい
- [Commitを取り消したい人に送る、「30秒」で解決する方法【Git入門】](https://www.sejuku.net/blog/70611)

#### ▶︎ 不要な処理を打ち消したい
- [緊急時の必須テクニック! git revertで不要な処理を打ち消そう](https://www.sejuku.net/blog/71634)

#### ▶︎ リポジトリを削除したい
- [緊急時の必須テクニック! git revertで不要な処理を打ち消そう](https://docs.github.com/ja/repositories/creating-and-managing-repositories/deleting-a-repository)

#### ▶︎ 異なるブランチの差分を取り込みたい
- [【Git】git mergeコマンドで異なるブランチの更新分を取り込む](https://pointsandlines.jp/env-tool/git-merge-other-branch)
- [【Git】自分が今いるブランチを確認する](https://zenn.dev/kou_pg_0131/articles/git-view-current-branch)

----

### :star: 実践系

#### ▶︎ 間違えてマージしたプルリクを削除したい
- [Pull Request を打ち消す](https://docs.github.com/ja/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request)
#### ▶︎ issueとプルリクを紐付けたい。
- [Pull RequestをIssueにリンクする](https://docs.github.com/ja/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)

----

### :warning:　エラー系　:warning:
#### ▶︎　初プッシュ時にエラーが出る
- `【Git】初プッシュ時にsrc refspec master does not match anyとエラーになる` : [https://www.mtioutput.com/entry/git-pusherror-refspec](https://www.mtioutput.com/entry/git-pusherror-refspec)

#### ▶︎ Everything up-to-dateが発生し、プッシュできない。
- `git pushできないときの対処方法。[Everything up-to-date]が発生する場合。`：https://www.zunouissiki.com/entry/cannot-git-push-everything-up-to-date/

#### ▶︎ クローンできない、プッシュできない。
- `git clone時に「Please make sure you have the correct access rights and the repository exists.」が発生する場合` ：https://qiita.com/GakuNaitou/items/81dbbd3ea6211af71648

---

### Github
#### ▶︎ フォークの同期
https://docs.github.com/ja/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

---

### :relaxed: ついでに。
#### ▶︎　リポジトリ作成時に表示される便利コマンド
コマンドラインで新しいリポジトリを作成。
``` shell
// README作成
echo "# practice" >> README.md
// 初期化
git init
git add README.md
git commit -m "コミットメッセージ"
git branch -M main
git remote add origin リポジトリ
git push -u origin main
```
コマンドラインから既存のリポジトリをプッシュ。
```shell
git remote add origin リポジトリ
git branch -M main
git push -u origin main
```