Gitの基本操作を作業を例に学ぶ

|目次|
|---|
|[新規ローカルリポジトリを作成してGitHubにアップロードするまで](#新規ローカルリポジトリを作成してgithubにアップロードするまで)|
|[既存ファイルを変更してリモートリポジトリにプッシュするまで](#既存ファイルを変更してリモートリポジトリにプッシュするまで)|
|[リモートリポジトリの最新状態をローカルリポジトリに反映する(fetch-merge版)](#リモートリポジトリの最新状態をローカルリポジトリに反映するfetch-merge版)|
|[リモートリポジトリの最新状態をローカルリポジトリに反映する(pull版)](#リモートリポジトリの最新状態をローカルリポジトリに反映するpull版)|
|[ローカルリポジトリに新しいブランチを作成してリモートリポジトリにプッシュするまで](#ローカルリポジトリに新しいブランチを作成してリモートリポジトリにプッシュするまで)|
|[developブランチ更新してmainブランチに反映するためのプルリクを行う](#developブランチ更新してmainブランチに反映するためのプルリクを行う)|
|[まだpushしていない直前のコミットメッセージを修正してpushする](#まだpushしていない直前のコミットメッセージを修正してpushする)|

# 前提事項

* Gitをインストールしていること

https://qiita.com/T-H9703EnAc/items/4fbe6593d42f9a844b1c

# 新規ローカルリポジトリを作成してGitHubにアップロードするまで

* リモートリポジトリを作成するので、**GitHub**にログインしてください。

https://github.com/

* 「**New**」を押下してください。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/4d42b156-9212-5016-aceb-dc4f7d81ed2b.png)

* 「**Repository name\***」に任意の名前を設定します。今回は**GitCli**とします。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/c0197b95-4597-0bb6-f420-7038c65c3f70.png)


:::note warn
警告
* 外部に公開したくない場合は「**Private**」を選択してください。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/b9d37c67-7d55-066f-bc89-6035112b0467.png)
:::

* 「**Create repository**」を押下してください。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/9ee5f621-2f05-ca50-0afd-964199b22ba4.png)

「**...or create a new repository on the command line**」の内容コピーしてください。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/63ff37d3-ea75-dff7-cfaf-6210d92d279d.png)


* 任意の場所に作業ディレクトリを作成してください。今回は**gitcui**とします。

```bash:作業ディレクトリの作成
mkdir gitcli
```

* 作成した作業ディレクトリに移動してください。

```bash:作業ディレクトリに移動
cd gitcli
```

コピーした内容を順番に実行してください。

```bash:GitHubでコピーした内容
echo "# GitCli" >> README.md
  git init
  git add README.md
  git commit -m "first commit"
  git branch -M main
  git remote add origin git@github.com:T-H9703EnAc/GitCli.git
  git push -u origin main
```

以下のように「**README.md**」が新規リポジトリに追加されれば成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/d3b32441-d361-b357-19d6-abef58833935.png)


# 既存ファイルを変更してリモートリポジトリにプッシュするまで

* ローカル環境で任意の方法で、「**README.md**」に変更を加えます。

```bash:README.mdに追記する
echo "README.mdに追記" >> README.md
```

* 変更状態を確認します。

```bash:変更状態を確認
git diff
```

<details><summary>実行結果</summary><div>

:::note info
* 変更内容は以下のように表示されます。
```bash:git diff実行結果
diff --git a/README.md b/README.md
index 44f8ffc..7d0e9fb 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
 # GitCli
```
:::
</div></details>

* 変更したファイルをステージングに追加します。今回は「**README.me**」です。

```bash:ステージングに追加
git add README.md
```


:::note info
* 変更した複数のファイルをすべて一度に追加したい場合は、以下のコマンドを実行してください。
```bash:ステージングに追加(すべての変更ファイルを追加)
git add .
```
:::

* ステージングに追加されているか確認します。

```bash:ステージングに追加されているか確認
git status
```
<details><summary>実行結果</summary><div>

:::note info
* ステージング状態は以下のように表示されます。
```bash:ステージング状態の確認
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md
```
:::

</div></details>

:::note info
* ステージングしたファイルの変更は、以下のコマンドで確認できます。
```bash:ステージングしたファイルの変更確認
git diff --staged
```
:::

* **コミット**を実施します。

```bash:コミットを実施
git commit -m "README.mdに内容を追記"
```

<details><summary>実行結果</summary><div>

:::note info

* コミット後のメッセージは、以下のように表示されます。
```bash:コミットの結果
[main ba2db7b] README.mdに内容を追記
 1 file changed, 1 insertion(+)
```
:::

</div></details>

* **プッシュ**を実施します。

```bash:プッシュを実施
git push -u origin main
```
<details><summary>実行結果</summary><div>

:::note info
* プッシュ後のメッセージは、以下のように表示されます。
```bash:プッシュ後のメッセージ
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 323 bytes | 161.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:T-H9703EnAc/GitCli.git
   70e94a1..ba2db7b  main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
```
:::
</div></details>

以下の画像ように「**README.mdに追記**」が追加されていたら成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/9a00118f-d27f-53ee-e55d-72d836414217.png)



# リモートリポジトリの最新状態をローカルリポジトリに反映する(fetch-merge版)

まずは、リモートリポジトリの「**README.me**」を[GitHub](https://github.com/)から直接変更します。

* 編集ボタンを押下します。

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/cbef5599-fc6a-75e5-336f-dd37a32169dd.png)

* 以下の文言を追記し、「**Commit changes...**」を押下します。

```:README.meへの追記内容
README.mdに追記(fetch merge)
```

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/2a293ce2-5035-c40b-25f1-b89b4dbc1fb6.png)

* 以下を「**Commit message**」を入力し、「**Commit changes**」を押下します。

```:Commit messageに入力する内容
README.mdをリモートリポジトリから直接更新
```

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/f9465c2e-9f73-6bf2-fe30-c70aab984103.png)

以下のように表示されれば、リモートリポジトリの更新は完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/10a31558-431c-8c02-8acd-99e04ee0a566.png)

次に、ローカル環境にこれを反映します。

* まずは、現在の状況を確認するためにコミット履歴を確認します。

```:現在のコミット履歴を確認する
git log --oneline
```

<details><summary>実行結果</summary><div>

:::note info
* コミット履歴のメッセージは、以下のように表示されます。
```bash:コミット履歴確認コマンド
ba2db7b (HEAD -> main, origin/main) README.mdに内容を追記
70e94a1 first commit
```
:::

</div></details>

* ローカルブランチを更新します。

```bash:fetchコマンド
git fetch origin
```

<details><summary>実行結果</summary><div>

:::note info
* フェッチ後のメッセージは、以下のように表示されます。
```bash:フェッチの結果
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 732 bytes | 244.00 KiB/s, done.
From github.com:T-H9703EnAc/GitCli
   ba2db7b..04b79dd  main       -> origin/main
```
:::
</div></details>

* ローカルブランチととリモートブランチの差分を確認します。

```:ローカルブランチととリモートブランチの差分を確認するコマンド
git log main..origin/main --oneline
```

<details><summary>実行結果</summary><div>

:::note info
* **GitHub**で更新した内容が表示されます。
```bash:コミット履歴の結果
04b79dd (origin/main) README.mdをリモートリポジトリから直接更新
```
:::

</div></details>

* 事前に、まだ作業ディレクトリが更新されていないことを確認するために、「**README.md**」を確認します。

```:README.mdの内容を確認
cat README.md
```

<details><summary>実行結果</summary><div>

:::note info

* 「**README.md**」はまだ、更新されていません。
```bash:README.mdの中身
# GitCli
README.mdに追記
```
:::

</div></details>


* 作業ディレクトリを更新します。

```bash:mergeコマンド
git merge origin/main
```

<details><summary>実行結果</summary><div>

:::note info

* マージ後のメッセージは、以下のように表示されます。
```bash:マージの結果
Updating ba2db7b..04b79dd
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)
```
:::

</div></details>

* コミット履歴を確認します。

```:現在のコミット履歴を確認する
git log --oneline
```

<details><summary>実行結果</summary><div>

:::note info
* コミット履歴が追加されています。
```bash:コミット履歴確認コマンド
04b79dd (HEAD -> main, origin/main) README.mdをリモートリポジトリから直接更新
ba2db7b README.mdに内容を追記
70e94a1 first commit
```
:::

</div></details>

* 「**README.md**」を確認します。

```:README.mdの内容を確認
cat README.md
```

<details><summary>実行結果</summary><div>

:::note info

* 「**README.md**」は、更新されます。
```bash:README.mdの中身
# GitCli
README.mdに追記
README.mdに追記(fetch merge)
```
:::

</div></details>

# リモートリポジトリの最新状態をローカルリポジトリに反映する(pull版)

* [fetch-merge版](#リモートリポジトリの最新状態をローカルリポジトリに反映するfetch-merge版)と同じように[GitHub](https://github.com/)で直接リモートリポジトリの「**README.me**」の内容を更新してください。

```:README.meへの追記内容
README.mdに追記(pull)
```

```:Commit messageに入力する内容
README.mdをリモートリポジトリから直接更新2
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/5fd6fec3-00c6-fafb-9d26-75ffe9fcb951.png)

* 更新前のコミット履歴を確認します。

```:現在のコミット履歴を確認する
git log --oneline
```

<details><summary>実行結果</summary><div>

:::note info
* コミット履歴が追加されています。
```bash:コミット履歴確認コマンド
04b79dd (HEAD -> main, origin/main) README.mdをリモートリポジトリから直接更新
ba2db7b README.mdに内容を追記
70e94a1 first commit
```
:::

</div></details>



* 更新前の「**README.md**」を確認します。

```:README.mdの内容を確認
cat README.md
```

<details><summary>実行結果</summary><div>

:::note info

* 「**README.md**」は、更新されます。
```bash:README.mdの中身
# GitCli
README.mdに追記
README.mdに追記(fetch merge)
```
:::

</div></details>

* ローカルリポジトリと作業ディレクトリを更新します。

```bash:pullコマンド
git pull origin main
```

<details><summary>実行結果</summary><div>

:::note info
* プル後のメッセージは、以下のように表示されます。
```bash:プルの結果
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 736 bytes | 245.00 KiB/s, done.
From github.com:T-H9703EnAc/GitCli
 * branch            main       -> FETCH_HEAD
   04b79dd..fa6563e  main       -> origin/main
Updating 04b79dd..fa6563e
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)
```
:::

</div></details>



* 更新後のコミット履歴を確認します。

```:現在のコミット履歴を確認する
git log --oneline
```

<details><summary>実行結果</summary><div>

:::note info
* コミット履歴が追加されています。
```bash:コミット履歴確認コマンド
fa6563e (HEAD -> main, origin/main) README.mdをリモートリポジトリから直接更新2
04b79dd README.mdをリモートリポジトリから直接更新
ba2db7b README.mdに内容を追記
70e94a1 first commit
```
:::

</div></details>



* 更新後の「**README.md**」を確認します。

```:README.mdの内容を確認
cat README.md
```

<details><summary>実行結果</summary><div>

:::note info

* 「**README.md**」は、更新されます。
```bash:README.mdの中身
# GitCli
README.mdに追記
README.mdに追記(fetch merge)
README.mdに追記(pull)
```
:::

</div></details>

# ローカルリポジトリに新しいブランチを作成してリモートリポジトリにプッシュするまで

* 現在のブランチを確認します。

```bash:現在のブランチを確認
git branch
```

<details><summary>実行結果</summary><div>

:::note info

* 「**main**」ブランチと確認できます。
```bash:ブランチ確認結果
* main
```
:::

</div></details>

* 新規ブランチを作成して、そのブランチに切り替えます。ブランチ名は「**develop**」とします。

```bash:新規ブランチを作成して、そのブランチに切り替える
git checkout -b develop
```

<details><summary>実行結果</summary><div>

:::note info

* 「**develop**」ブランチを作成して、切り替えています。
```bash:新規ブランチ作成結果
Switched to a new branch 'develop'
```
:::

</div></details>

* 再度、現在のブランチを確認します。

```bash:現在のブランチを確認
git branch
```

<details><summary>実行結果</summary><div>

:::note info

* 「**develop**」ブランチと確認できます。
```bash:ブランチ確認結果
* develop
  main
```
:::

</div></details>

* 特に何も更新せず、一旦リモートリポジトリにプッシュします。

```bash:プッシュを実施
git push origin develop
```

<details><summary>実行結果</summary><div>

:::note info

* プッシュ後のメッセージは、以下のように表示されます。
```bash:push結果
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'develop' on GitHub by visiting:
remote:      https://github.com/T-H9703EnAc/GitCli/pull/new/develop
remote:
To github.com:T-H9703EnAc/GitCli.git
 * [new branch]      develop -> develop
```
:::

</div></details>

* GitHubを確認すると以下のように「**develop**」ブランチが追加されています。

![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/2b9f4469-e177-2389-15b1-154c581668b0.png)

# developブランチ更新してmainブランチに反映するためのプルリクを行う

* ブランチが「**develop**」であることを確認します。

```bash:現在のブランチを確認
git branch
```

<details><summary>実行結果</summary><div>

:::note info

* 「**develop**」ブランチと確認できます。
```bash:ブランチ確認結果
* develop
  main
```
:::

</div></details>

:::note warn

* もし、「**develop**」ブランチ出ない場合は、以下のコマンドで切り替えます。
```bash:ブランチ切り替え
git checkout develop
```
:::

* 「**develop**」ブランチで、「**README.md**」に変更を加えます。

```bash:README.mdに追記する
echo "README.mdに追記(プルリク)" >> README.md
```

* 変更状態を確認します。

```bash:変更状態を確認
git diff
```

<details><summary>実行結果</summary><div>

:::note info

* 変更内容は以下のように表示されます。
```bash:ブランチ確認結果
diff --git a/README.md b/README.md
index d610b05..67dad33 100644
--- a/README.md
+++ b/README.md
@@ -2,3 +2,4 @@
 README.mdに追記
 README.mdに追記(fetch merge)
 README.mdに追記(pull)
+README.mdに追記(プルリク)
```
:::

</div></details>

* 変更したファイルをステージングに追加します。
```bash:ステージングに追加
git add README.md
```

* ステージングに追加されているか確認します。
```bash:ステージングに追加されているか確認
git status
```

<details><summary>実行結果</summary><div>

:::note info

* ステージング状態は以下のように表示されます。
```:ステージング状態の確認
On branch develop
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md
```
:::

</div></details>

* コミットを実施します。

```bash:コミットを実施
git commit -m "README.mdに内容を追記(プルリク)"
```
<details><summary>実行結果</summary><div>

:::note info

* コミット後のメッセージは、以下のように表示されます。

```bash:コミットの結果
[develop 92e2373] README.mdに内容を追記(プルリク)
 1 file changed, 1 insertion(+)
```

:::

</div></details>


* プッシュを実施します。

```bash:プッシュを実施
git push -u origin develop
```
<details><summary>実行結果</summary><div>

:::note info
* プッシュ後のメッセージは、以下のように表示されます。
```bash:プッシュ後のメッセージ
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 368 bytes | 184.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:T-H9703EnAc/GitCli.git
   fa6563e..92e2373  develop -> develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
```
:::
</div></details>

* GitHubを確認すると「**main**」ブランチは更新されていません。

![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/7282c941-827d-8a35-f943-ae21ec058240.png)

* 「**develop**」ブランチは更新されています。

![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/ee8698ac-0076-a8d9-ec90-571e5c62c997.png)

「**プルリク**」を実施します。

* 「**Pull requests**」を押下します。

![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/b16c653c-72c6-61ed-3d31-d4fd8678824f.png)

* 「**NEW pull request**」を押下します。

![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/a8aad832-5c6d-b4bf-05af-213ad67740e7.png)

* プルダウンから「**base: main**」、「**compare: develop**」を選択します。

:::note info
* **base**: マージ先(変更させたいブランチ)
* **compare**: マージ元(自分が変更したブランチ)
:::

![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/e1841d7b-23ef-f417-d7f7-2b14ad6b29a9.png)

* 変更内容を確認したら、「**Create pull request**」を押下します。

![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/c96ec72d-5e74-c37f-385e-0a2f497b79a5.png)


* 「**Add a title(タイトル)**」と「**Add a description(説明)**」を記載したら、「**Create pull request**」を押下します。

![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/d26d5b7e-7ad2-eda0-6e73-ae09b0905397.png)

* 以下のように表示されたら、プルリクは成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/a7e0a792-a293-6250-dac0-3b9d2d29e72c.png)

* 「**Merge pull request**」を押下します。

:::note warn
本来は、レビュアーがコードレビューを行い、問題がなければ「**Merge pull request**」を実施します。
:::

![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/f7dd752b-056e-b2b1-0088-2244ea9b3786.png)

* 「**Confirm merge**」を押下します。

![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/44a72ee3-6af2-0f56-5872-046e6b369ea2.png)

* 以下のように「**Pull request successfully merged and closed**」と表示されれば成功です。

![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/a7937b4e-e358-96c6-a41c-3fa02d804cc6.png)

* 「**main**」ブランチを確認すると、変更内容が反映されていることが確認できます。

![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/8672cc31-0f23-fd6f-c031-014c56ed2318.png)

* ローカルブランチを「**main**」ブランチに変更します。

```bash:mainブランチに変更する
 git checkout main
```

<details><summary>実行結果</summary><div>

:::note info
* mainブランチ変更のメッセージは、以下のように表示されます。
```bash:mainブランチ変更のメッセージ
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
```
:::

</div></details>

* プルを実施します。

```bash:プルを実施
git pull origin main
```

<details><summary>実行結果</summary><div>

:::note info
* プル後のメッセージは、以下のように表示されます。
```bash:プル後のメッセージ
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (1/1), 684 bytes | 171.00 KiB/s, done.
From github.com:T-H9703EnAc/GitCli
 * branch            main       -> FETCH_HEAD
   fa6563e..04552c0  main       -> origin/main
Updating fa6563e..04552c0
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)
```
:::
</div></details>

* ファイル内容を確認します。

```bash:ファイル内容を確認
cat README.md
```

<details><summary>実行結果</summary><div>

:::note info
* ローカルリポジトリもリモートリポジトリ同様、「**develop**」ブランチの内容が「**main**」ブランチに反映されています。
```bash:ファイル内容
# GitCli
README.mdに追記
README.mdに追記(fetch merge)
README.mdに追記(pull)
README.mdに追記(プルリク)
```
:::
</div></details>

# まだpushしていない直前のコミットメッセージを修正してpushする

* 「**README.md**」に変更を加えます。

```bash:README.mdに追記する
echo "README.mdに追記(コミットメッセージ修正)" >> README.md
```

* 変更状態を確認します。

<details><summary>実行結果</summary><div>

:::note info

* 変更内容は以下のように表示されます。
```bash:ブランチ確認結果
diff --git a/README.md b/README.md
index 67dad33..e626677 100644
--- a/README.md
+++ b/README.md
@@ -3,3 +3,4 @@ README.mdに追記
 README.mdに追記(fetch merge)
 README.mdに追記(pull)
 README.mdに追記(プルリク)
+README.mdに追記(コミットメッセージ修正)
```
:::

</div></details>

* 変更したファイルをステージングに追加します。
```bash:ステージングに追加
git add README.md
```

* ステージングに追加されているか確認します。
```bash:ステージングに追加されているか確認
git status
```

<details><summary>実行結果</summary><div>

:::note info

* ステージング状態は以下のように表示されます。
```:ステージング状態の確認
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md
```
:::
</div></details>


* を間違えたコミットメッセージでコミットを実施します。

```bash:間違えたコミットメッセージでコミットを実施
git commit -m "README.mdに内容を追記(コミットメッセージ修正)_間違い"
```
<details><summary>実行結果</summary><div>

:::note info

* コミット後のメッセージは、以下のように表示されます。

```bash:コミットの結果
[main 736fe07] README.mdに内容を追記(コミットメッセージ修正)_間違い
 1 file changed, 1 insertion(+)
```
:::

</div></details>

* 直前のコミットメッセージを確認します。

```bash:直前のコミットメッセージを確認
git log -1 --oneline
```

<details><summary>実行結果</summary><div>

:::note info

* 直前のコミットメッセージは、以下のように表示されます。

```bash:コミットの結果
736fe07 (HEAD -> main) README.mdに内容を追記(コミットメッセージ修正)_間違い
```
:::

</div></details>

* コミットメッセージを修正します。

```bash:コミットメッセージを修正する
git commit --amend
```

* 以下の画像のように、テキストエディタが開くので、メッセージを修正します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/ef2d114d-a9d5-ebf0-d480-9db228b74b2c.png)

* メッセージを以下のように修正します。

```:修正後コミットメッセージ
README.mdに内容を追記(コミットメッセージ修正)
```

* 添付画像のように開いたテキストエディタが**Nano**の場合は、「**Ctrl + O(オー)**」を押下します。

* 「**Enter**」で保存します。

* 「**Ctrl + X**」でエディタを閉じます

<details><summary>実行結果</summary><div>

:::note info

* コミットメッセージ修正後は、以下のように表示されます。

```bash:コミットメッセージ修正後の結果
[main c441272] README.mdに内容を追記(コミットメッセージ修正)
 Date: Tue Dec 19 01:05:53 2023 +0900
 1 file changed, 1 insertion(+)
```
:::

</div></details>

* コミットメッセージのログを確認します。

```bash:
git log --oneline
```

<details><summary>実行結果</summary><div>

:::note info

* コミットメッセージのログは、以下のように表示されます。
```:コミットメッセージのログ確認結果
c441272 (HEAD -> main) README.mdに内容を追記(コミットメッセージ修正)
04552c0 (origin/main) Merge pull request #1 from T-H9703EnAc/develop
92e2373 (origin/develop, develop) README.mdに内容を追記(プルリク)
fa6563e README.mdをリモートリポジトリから直接更新2
04b79dd README.mdをリモートリポジトリから直接更新
ba2db7b README.mdに内容を追記
70e94a1 first commit
```
:::

</div></details>

* プッシュを実施します。

```bash:プッシュを実施
git push -u origin main
```
<details><summary>実行結果</summary><div>

:::note info
* プッシュ後のメッセージは、以下のように表示されます。
```bash:プッシュ後のメッセージ
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 415 bytes | 415.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:T-H9703EnAc/GitCli.git
   04552c0..c441272  main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

```

* リモートのコミットの履歴も正常であることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2663952/4b7454e3-acbc-9e33-d253-07166fb4b746.png)

:::
</div></details>