Git/GitHubの基本操作まとめ（復習・備忘録）

## はじめに
GitHubの基本を学び、実際の開発の流れを体験したので、復習も兼ねてまとめました。
この記事は、いつでも見返せる備忘録として、Git/GitHubの一連の作業手順を整理したものです。

## この記事で学べる事
Gitの基本操作である以下の手順を実践形式で学べます。


`git clone`：リポジトリの複製

`git branch`：ブランチの作成・切り替え

`git add / commit / push`：変更の反映とリモートへの送信

Pull Requestの作成とマージ

`git pull`：リモートの変更を取り込む

## 開発環境
OS：Windows
ターミナル：Windows PowerShell


## 1. Githubのリモートリポジトリからcloneを行う
まずはGitHubで対象リポジトリを作成し、「Code」ボタンからURLをコピーします。
![スクリーンショット 2025-05-28 224529.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/1009211c-1b6b-4916-875b-2e6c925e83dd.png)


![スクリーンショット 2025-05-28 224849.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/a4d244da-2d84-4e6d-8509-6606f1d771b4.png)

PowerShellで作業ディレクトリへ移動
例：Desktop に git_basic フォルダを作成して移動。
コマンド: `cd ~/Desktop/git_basic`

git clone を実行
例： `git clone https://github.com/ユーザー名/リポジトリ名.git`
コマンド: `git clone コピーしたURL`

コマンド: `ls` cloneができているか確認
![スクリーンショット 2025-05-28 230353.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/9a02a447-861d-4824-bb2e-4e36f12e18df.png)

クローンできたらディレクトリを移動します
コマンド: `cd リポジトリ名`

## 2. ブランチを作成して機能を追加する　
### 現在のブランチを確認
コマンド:`git branch`
初期状態では main または master ブランチが表示されます。


###  新しいブランチを作成（例：feature/login）
 コマンド: `git branch feature/login`

### ブランチを切り替える
コマンド: `git checkout feature/login`

### vsCodeで作業ディレクトリ(C:\Users\pc\Desktop\git_basic\git)を開いてください。
左下のbranchが切り替わっているか確認してください。
![スクリーンショット 2025-05-29 230033.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/1c8f7937-0740-41c2-b5a2-b817781c5a2c.png)

### 新しい機能を追加します(今回は直接login.phpを作成)
![スクリーンショット 2025-05-29 230256.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/d7239d6d-f5ca-492f-9dca-a1d9783547b3.png)

### Windows PowerShellへ戻ります。機能の追加ができているか確認を行います。　コマンド: ` git status`![スクリーンショット 2025-05-29 230744.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/ea269055-c563-411d-a7a4-23e7e0bdc222.png)
Untracked files:へ先ほど作成したファイルが表示されていたらokです。

### ステージングを行います。　コマンド: `git add login.php`　
add以降は各々追加したファイル名へ置換お願いします。
 `git add .`でも可能ではあります。

### ステージングができているか確認を行います。　コマンド: ` git status`
![スクリーンショット 2025-05-29 231812.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/3417e8d6-cf0d-4b9a-9399-2383af2266a6.png)
Changes to be committed: となっていればステージング完了です。

### コミットを行います。　　　　　　　　　　　　　　　　　　　　　　　　コマンド: `git commit -m "ログイン機能を追加しました"`　
""の中は適切なメッセージ内容を入力してください

### リモートリポジトリへpushを行います。　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　コマンド `git push origin feature/login`
origin はリモートリポジトリの名前（通常は「origin」になっています）
feature/login は今作業しているブランチの名前です

もしここでpushがうまくいかない時には、`git remote -v`でgitとの連携状況を確認します。![スクリーンショット 2025-05-29 234148.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/4f56aa1f-bb8d-4d52-9683-a1f975b11e00.png)

https:// ではなく、git@github.com:～.git のような SSH接続 に変更してみる。
そのために SSHキーの設定 を行うと、接続が安定することがあります。

## 4. pullrequestを行う
Githubでの操作を行っていきます。
上記のpushが成功していたら以下のような画面になっていると思います。
### Compare & pull requestをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/98d58142-c395-4854-a2cf-65e46e195da9.png)

### Create pull requestをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/a9d26ca1-ad38-4bdd-9a29-e6459489d2e3.png)

pullrequestは完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/c4a31b4a-9d6a-4d42-bf48-09cdf6e29024.png)

本来であればリーダーがmergeを行うのですが今回は一人なのでMerge pull request -> Confirm mergeをクリックしmergeをしてしまいましょう。

以下のようにリモートリポジトリへ機能を追加できていればokです!!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/07582c2e-3396-42c7-bbcc-85c3e3c2360d.png)

## 5. ローカルリポジトリへ最新のデータを取り込む　　　　　　　　　　　　　　　　　　　　(使うコマンド: git pull)
リモートリポジトリ（GitHub）からローカルリポジトリへ最新のデータを取り込んでいきます。
チーム開発では、他人のコードがGitHub上へ更新されていきます。そのためこの作業が必要となります。

まずは、branchを切り替えます。
コマンド:   `git checkout master`

リモートリポジトリのデータをmaster branchへ取り込みます
コマンド:   `git pull origin master`


メッセージの最後のように以下のような表記があればokです!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3931703/2cd39e7c-4e66-45e6-8d92-0e7707ef4140.png)

Vscodeでlogin.php(追加機能)が確認できれば、完了です。

## おさらい
一連の動作をもう一度確認していきます。
#### 1:    Githubのリモートリポジトリからcloneを行う      　　　　　　　　　　　　　 `git clone codeのurl`
#### 2:    branch作成:  `git branch 機能名`
#### 3:    branch移動:  `git checkout 機能名`
#### 4:    Vscodeで機能を追加
#### 5:    ステージング:  `git add 追加ファイル `
#### 6:    コミット:  `git commit -m "適切なメッセージ" `
#### 7:    プッシュ:  `git push -u origin 機能名  `
#### 8:    Github上でpullrequestを行いmargeしてもらう(今回は自分でmargeする)
#### 9:    branch移動:  `git checkout master`
#### 10:   最新データを取り込む  `git pull origin master`

#### 11:    branch作成:  `git branch 機能名` 
というように繰り返し行っていきます。

## 番外編 featchとmarge
前回git pullを使うと最新のデータを取り込むことができましたが`git fetch`と`git merge`を使っても同じようなことができます。

### 簡単に違いは
 `git pull` : リモートリポジトリから作業ディレクトリまで一度にデータを取り込む
   `git fetch` : リモートリポジトリからローカルリポジトリまでデータを取り込む
   `git merge` : ローカルリポジトリから作業ディレクトリまでデータを取り込む

　そのため、 `git fetch`＋`git merge`で `git pull`と同じ動作が可能です。
 実施してみます。Githubに追加機能をmergeしているところから始めます。

  コマンド:  `git fetch origin main`
  コマンド:  `git mearge origin main`

  以上の二つを行うことでpullと同様のことができます。


  ## 最後に
  最後まで見ていただきありがとうございます。
  Git/Githubを学習の方の少しでもお役に立てると光栄です。