Githubでコードを管理しよう


### Gitとは？
ソフトウェア開発において、**コードの変更履歴を管理できる分散型バージョン管理システム**です。

どゆことでしょう???
もう少し深掘ってみます。

---
### Gitでできること

- コードの変更履歴を管理
    
- ソースコードの共有
    
- テンプレートの作成・再利用
---
### 私がGitを使っている場面

- 業務でのチーム開発
    
- デスクトップPCとノートPC間のコード同期
    
- ソースコードのバックアップ・バージョン管理
    
- 静的ページの無料公開（GitHub Pages）
    
- 学習記録の可視化（GitHubの草を生やす）
---
### ## GitとGitHubの違い

- **Git**：ローカルで履歴管理するためのツール
    
- **GitHub**：Gitの仕組みを利用した**クラウド上のコード共有サービス**
    

---

### GitHub以外にもあるバージョン管理サービス

- Bitbucket
    
- GitLab
    
- Backlog

---
### GitHubでコード管理してみる
それでは実際にGitHubでコード管理を始めていきましょう

**必要なもの**
・Terminal （Source TreeやVS Codeでも可）
・GitHubアカウント

#### Step①：GitHubとSSH接続する（一番の難所）
以下の記事を参考にすれば対応できるはず
 [Git と GitHub 基本操作手順（SSH設定編）](https://zenn.dev/taroosg/articles/20241128185741-7ff336de9ad0c2)

#### Step②：GitHubリポジトリの作成
・ホーム画面から`New`を押下してリポジトリを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860607/97f2518a-158b-4917-ac48-a94735457e57.png)


・設定したいリポジトリ名を入力し、公開範囲を設定します。	
 Public：公開
 Private：非公開
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860607/c3b85b94-172a-4c3f-9f95-e935e30f525c.png)


#### Step③：ソースコードの登録
	リポジトリの作成が完了したら、ソースコードをGitHubに登録するフェーズに入ります。
	アップロード方法はいくつかあります。
		 1. GitHubリポジトリ内で新規作成
		 2. 既存フォルダをGitHubに連携してPush
		 3. ファイルをドラッグ&ドロップして登録
	今回は2.既存フォルダ（"test"フォルダ）をGitHubに連携してPushする方法を解説します。
	
1. ターミナルから`cd`コマンドを実行して、"test"ディレクトリへ移動
	```
	 cd /(ディレクトリ)/test
	```
	
2. `git init`を実行して、"test"ディレクトリをGitリポジトリとして初期化
	```
	test % git init
	Initialized empty Git repository in /***/test/.git/
	```

3. `git status`を実行して、リポジトリ内のステータスを確認
	→ "test"内のファイル（ここでは`test.md`）がUntracked fileとしてピックアップされる
	```
	test % git status
	
	> On branch mainNo commits yet

	> Untracked files:
	>   (use "git add <file>..." to include in what will be committed)
	> test.md
	```
	今回の説明では、Gitの変更管理対象として、`test.md`をGitHubにPushします。
	
4. `git add <ファイル名>`を実行して、変更管理対象のファイルをステージに上げる
	```
	test % git add test.md
	```
	※複数ファイルを指定する場合は半角スペースで繋げて入力してください。
	※statusで表示されたファイルすべてを ステージに上げる場合は`git add .`もしくは`git add -A`でも良し（コマンドの詳細は以下リンク参照）
	[git add -u と git add -A と git add . の違い](https://note.nkmk.me/git-add-u-a-period/)
	
5. `git commit -m "<コミットメッセージ>"`を実行して、登録するファイルをCommit
	```
	test % git commit -m "Initialize test"

	> [main (root-commit) ******] Initialize test
	>  1 file changed, 0 insertions(+), 0 deletions(-)
	>  create mode 100644 test.md
	```
6. `git remote add origin`コマンドを実行して、 ローカルリポジトリとリモートリポジトリを紐づけ
	```
	test % git remote add origin git@github.com:****/test.git
	```
	origin以降に記載するURLはGitHubリポジトリの下記欄を参照ください（SSHを選択すること）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860607/b09be82d-7615-4578-b400-28167eb6553e.png)

7. `git push origin main`を実行して、コミット内容をリモートリポジトリへPush
	```
	test % git push origin main
	
	> Enumerating objects: 3, done.
    > Counting objects: 100% (3/3), done.
	> Writing objects: 100% (3/3), 213 bytes | 213.00 KiB/s, done.
	> Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
	> To github.com:kame82/test.git
	>  * [new branch]      main -> main
	```
	成功すると、以下の通りGitHub上にPushしたファイルが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860607/b6039e2f-928f-49bc-9c98-584f729f9166.png)


#### Step④： 新たにブランチを切って、コード管理しながら開発を進める
1. `git checkout -b`コマンドを実行して、作業用ブランチを作成する。
		```
		test % git checkout -b <ブランチ名>
	 	> Switched to a new branch 'title'
		```
2. ファイルの編集作業を行う。
	特に説明なし。割愛。
	
3. 編集内容をCommitしてリモートリポジトリへPushする。
	```
	git add <変更対象ファイル>
	git commit -m "<コミットメッセージ>"
	git push origin add_title
	```
	
4. プルリクエストを出す。
	`Compare & pull request`を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860607/d58744b3-5bed-405c-9ff8-f5a2c28213a0.png)

	プルリクエスト依頼コメントを`Add a description`に記載して、`Create pull request`を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860607/b7329ce8-5c6a-4818-b82f-7f8f7c2e9476.png)

5. プルリクエストを承認してMergeする
	`Merge pull request`を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860607/33f37937-62f6-43ca-8b59-ae41f199595e.png)

	`Confirm merge`を押下してプルリクエストを承認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860607/5e0c7619-175d-4439-8308-9212a2275e8e.png)

	この操作によって、変更内容をリモート/mainブランチにMergeされる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860607/d32e0cdf-180a-4348-9029-8a68e465ec00.png)


6. ローカル/mainに変更内容を反映
	mainブランチに切り替えて、`git pull`コマンドでmainブランチを最新の状態にする。
	```
	git checkout main
	git pull origin main
	```

あとは、Step4を繰り返して開発を進めて行く流れになります。

## おわりに

初めてGitやGitHubに触れる方にとって、最初の設定やSSH接続はややハードルが高いかもしれません。でも、一度環境が整えば、バージョン管理の恩恵は非常に大きく、学習にも開発にもとても役立ちます。

別記事で実務で実際に使ったGitコマンドをまとめておりますので、こちらも合わせてご確認ください。

[Git操作　実務で生じた事象と対応のメモ](https://qiita.com/kamewo/items/5d7884bf9c1d6fd1794a)

Gitを学ぶには「とにかく触ってみる」ことが大切です！  
Let’s Git started 🚀