不動産屋さんがGitHubを触ってみた＃１

こんにちははじめましてchivas07です
軽くですが自己紹介を
年齢30代の不動産賃貸業を生業としています。現在は退去立ち合いとリフォーム時の見積書と資料作成をしています。
昨年宅建を取得し、新たに何かを学びたいと思い始めてみました。
IT業界で今必要な物を理解するためにブログを作っていきます。

間違っているところが多々あると思います。
その際はご教示いただければ幸いです。

今後記事掲載を頑張っていきますのでよろしくお願いします。

---------------------------------------
今回は「GitHubでブランチを切ってプッシュをする」をやってみます。
---------------------------------------
そもそもGitHubを調べてみて…
不動産で例えると
ストレージは家でリポジトリ土地とした場合
「GitHubはクラウドベースのストレージにコードのリポジトリを保持できるプラットホーム」というのは建物を建てる際流れを理解するに使う建築時使う工程表で大工さんや設備屋さんのすべての施工内容を保管してのおくようなものか…
不動産屋じゃなく建築屋さんの理解だわ(・.・)

---------------------------------------
さて、アカウント作成とリポジトリの作成をしてみました。
![スクリーンショット 2024-04-09 163651.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750274/9d2815a1-5155-6718-ca3a-83ee0b1a3754.png)


以下手順です。
---------------------------------------

1. **GitHub上で新しいブランチを作成する：**
   GitHubのリポジトリページに移動し、「Branch: main」の隣にある「main」または既存のブランチ名をクリックします。そこで、新しいブランチ名を入力し、Enterを押すか、「Create branch: [ブランチ名]」をクリックして新しいブランチを作成します。

2. **ローカルで新しいブランチに切り替える：**
   ターミナルやコマンドプロンプトを開き、対象のローカルリポジトリに移動します。次に、以下のコマンドを入力して新しいブランチに切り替えます。

   ```bash
   git checkout -b 新しいブランチ名
   ```

   ```bash
   git checkout ブランチ名
   ```

2-2. **新しいブランチの作成と切り替え：** `-b` オプションを付けて `checkout` コマンドを使用すると、新しいブランチを作成してからそのブランチに切り替えることができます。

   ```bash
   git checkout -b 新しいブランチ名
   ```

2-3. **ファイルの復元：** 変更を加えたファイルを以前の状態に戻したい場合、 `checkout` コマンドを使用してファイルを復元できます。

   ```bash
   git checkout -- ファイル名
   ```

2-4. **特定のコミットの確認：** コミットのハッシュ値を指定して `checkout` コマンドを実行すると、特定のコミットの状態を確認することができます。

   ```bash
   git checkout コミットのハッシュ値
   ```

`checkout` コマンドは非常に柔軟で多目的なコマンドであり、Gitで作業を行う際によく使用されます。


3.**変更を加えてコミットする：**
   ブランチが切り替わったら、作業ディレクトリ内でファイルの変更を行います。変更が完了したら、変更内容をステージングし、コミットします。

   ```bash
   git add .  # 変更をステージング
   git commit -m "変更内容の説明"  # 変更をコミット
   ```
4. **リモートに新しいブランチをプッシュする：**
   変更がコミットされたら、新しいブランチをリモートリポジトリにプッシュします。

   ```bash
   git push origin 新しいブランチ名
   ```

これで、新しいブランチがGitHub上に作成され、変更がプッシュされます。他の開発者とのコラボレーションや、新しい機能の開発を安全に行うことができます。

---------------------------------------

単語詳細とコード
---------------------------------------
checkoutの目的
→`git checkout` コマンドを実行すると、主に以下のいずれかの目的で使用されます：

1. **ブランチの切り替え：** 特定のブランチに移動します。これにより、作業ディレクトリ内のファイルが選択したブランチの状態に更新されます。

2. **新しいブランチの作成と切り替え：** `-b` オプションを使用して新しいブランチを作成し、そのブランチに移動します。

3. **ファイルの復元：** 変更を加えたファイルを以前の状態に戻します。この場合、`--` を使用してファイル名を指定する必要があります。

4. **特定のコミットの確認：** コミットのハッシュ値を指定して特定のコミットの状態を確認します。

具体的な使い方は次の通りです：

- ブランチの切り替え：
  ```bash
  git checkout ブランチ名
  ```
- 新しいブランチの作成と切り替え：
  ```bash
  git checkout -b 新しいブランチ名
  ```
- ファイルの復元：
  ```bash
  git checkout -- ファイル名
  ```
- 特定のコミットの確認：
  ```bash
  git checkout コミットのハッシュ値
  ```
結果：`git checkout` コマンドを使用することで、ブランチの切り替えやファイルの復元などの操作が行えます。

git addを実行するとどうなるのか
→Gitは指定されたファイルや変更内容をステージングエリア（またはインデックス）に追加します。このプロセスは、ファイルの変更内容を次のコミットに含めるための準備を行うものです。

1. **変更のステージング：**
   `git add` コマンドは、指定されたファイルや変更内容をステージングエリアに追加します。これにより、Gitは変更内容を次のコミットに含めるための準備を行います。

2. **ステージングエリアへの追加：**
   Gitは、ステージングエリアに追加された変更内容をトラッキングします。ステージングエリアに追加された変更は、次のコミットでコミットされるファイルとしてマークされます。

3. **コミットに含める準備が**
   `git add` コマンドでステージングされた変更内容は、次のコミットに含める準備が整います。つまり、コミットを作成する際に、ステージングエリアに追加された変更がコミットに含まれます。

結果：git addを実行す津ことでステージングエリアに変更を追加することになり、コミットするファイルを選択的に制御できます。これにより、変更内容を細かく分割してコミットすることができ、コードの変更履歴をわかりやすく管理することができます。

git commitを実行するとどうなるか
→Gitはステージングエリアに追加された変更内容をリポジトリにコミットします。具体的には、次のようなことが起こります。

1. **コミットの作成：** `git commit` コマンドを実行すると、Gitはステージングエリアにある変更内容を含む新しいコミットを作成します。コミットは、変更のスナップショットとして、プロジェクトの状態を特定の時点で記録します。

2. **コミットメッセージの入力：** コミットを作成する際には、コミットメッセージを入力する必要があります。コミットメッセージは、変更の目的や内容を説明するためのものであり、他の開発者や将来の自分自身がコードを読んだときに理解しやすくするために重要です。

3. **コミットの完了：** コミットメッセージを入力した後、コミットが正常に完了します。これにより、変更内容がリポジトリの履歴に記録され、プロジェクトのバージョン管理が行われます。

つまりgit commitを実行することで変更内容が確実にリポジトリに記録され、プロジェクトの変更履歴が管理されます。これにより、コードの追跡や変更の管理が容易になり、チーム全体でのコラボレーションが効果的に行われます。

git push originを実行するとどうなるか
→ローカルリポジトリの変更内容をリモートリポジトリにプッシュするために使用されます。具体的には以下のような行動をします：

1. **変更内容のプッシュ：** `git push origin` コマンドを実行すると、ローカルリポジトリでコミットされた変更内容がリモートリポジトリに送信されます。

2. **指定されたリモートリポジトリへのプッシュ：** `origin` は、通常、リモートリポジトリの名前として使用されます。このコマンドでは、指定されたリモートリポジトリ（通常は、リモートリポジトリのURLが登録された `origin`）に変更内容がプッシュされます。

3. **ブランチの対応付け：** プッシュされる変更内容は、ローカルの現在のブランチからリモートの対応するブランチに対して行われます。たとえば、現在のブランチが `main` であり、リモートの対応するブランチも `main` の場合、`git push origin` はローカルの `main` ブランチからリモートの `main` ブランチに変更内容をプッシュします。

4. **変更内容のアップロード：** `git push origin` コマンドを実行すると、ローカルでコミットされた変更内容がリモートリポジトリにアップロードされ、リモートリポジトリの履歴が更新されます。

`git push origin` コマンドを使用することで、ローカルでの作業内容をリモートリポジトリに反映させることができます。これにより、チームメンバーとのコラボレーションが容易になり、プロジェクトの進行状況を共有できます。

以下は、`git checkout`・`git add`・`git commit`・`git push origin` の流れをまとめたものです：

1. **git checkout:**
   - ブランチの切り替えやファイルの復元など、様々な目的で使用されます。

2. **git add:**
   - 変更したファイルや変更内容をステージングエリアに追加します。

3. **git commit:**
   - ステージングエリアに追加された変更内容をリポジトリにコミットします。
   - コミットメッセージを入力し、変更の目的や内容を説明します。

4. **git push origin:**
   - ローカルリポジトリでコミットされた変更内容をリモートリポジトリにプッシュします。
   - 指定されたリモートリポジトリ（通常は `origin`）に変更内容がアップロードされ、リモートリポジトリの履歴が更新されます。

この流れに従うことで、ローカルでの作業内容がステージングされ、コミットされ、最終的にリモートリポジトリにプッシュされることになります。これにより、効果的なバージョン管理が可能になり、チーム全体でのコラボレーションがスムーズに行われます。


ステージング（ステージリング）とは、変更されたファイルや変更内容を、次のコミットでコミットされるファイルとしてマークすることを指します。

ステージングを行うことで、以下の利点があります。
1. **柔軟なコミット管理：** ステージングを使用することで、コミットするファイルを選択的に制御できます。特定の変更を個別のコミットに分割したり、一度に大量の変更をコミットしたりすることができます。

2. **変更のレビュー：** ステージングを行うことで、変更内容を確認し、レビューすることができます。ステージングされた変更内容は、次のコミットでコミットされるファイルとして明示的に表示されるため、変更内容の確認や意図した変更のみをコミットすることができます。

3. **変更の分割：** ステージングを使用することで、大規模な変更を小さな単位に分割してコミットすることができます。これにより、コードの変更履歴を細かく管理し、変更の追跡や理解が容易になります。

ステージングは、効果的なバージョン管理やチームワークに欠かせないものです。

コミット（Commit）とは、ファイルの変更内容をリポジトリの履歴に追加し、変更を永続的に保存することを指します。

コミットを行うと、変更内容がリポジトリ内の特定のブランチにコミットされ、変更の履歴が作成されます。コミットにはメッセージが含まれ、その変更の目的や内容を説明することが一般的です。

コミットを行う主な目的は以下の通りです：

1. **変更の記録:** コミットを行うことで、ファイルの変更内容がリポジトリの履歴に記録されます。これにより、過去の変更を追跡したり、必要に応じてそれらを復元したりすることができます。

2. **チームとの共有:** コミットされた変更はリポジトリに保存され、他の開発者と共有されます。これにより、チームメンバー間での作業の同期やコラボレーションが容易になります。

3. **バージョン管理:** コミットによって、プロジェクトの異なるバージョンやリリース間の変更履歴が管理されます。これにより、プロジェクトの進行状況や変更の経緯を把握しやすくなります。

コミットを行うには、変更をステージングエリアに追加し、次にコミットを実行する必要があります。コミットは、Gitの中で最も基本的な操作の一つであり、効果的なバージョン管理とチームワークの実現に欠かせないものです。

まとめました。

ステージリング（Staging）とコミット（Commit）は、Gitにおける基本的な操作であり、変更の管理と記録に使用されます。

**ステージリング（Staging）**：
- 変更されたファイルや変更内容を、次のコミットに含めるための準備を行う操作。
- 変更内容をステージングエリア（またはインデックス）に追加し、Gitに次のコミットでコミットされるファイルとしてマークする。
- ステージングにより、コミットするファイルを選択的に制御し、変更を柔軟に管理できる。

**コミット（Commit）**：
- ステージングされた変更内容をリポジトリに記録し、変更を永続的に保存する操作。
- ファイルの変更内容や追加されたファイルをリポジトリの履歴に追加し、変更の履歴を作成する。
- コミットにはメッセージが含まれ、変更の目的や内容を説明することが推奨される。

結果：ステージリングは、変更を次のコミットに含める準備を行い、コミットは実際に変更内容をリポジトリに記録します。ステージングを使用することで、変更内容を選択的にコミットに含めたり、変更のレビューや分割を行ったりすることができます。コミットによって、変更の履歴が作成され、プロジェクトの進行状況やバージョン管理が行われます。

---------------------------------------
今までの流れです。
---------------------------------------

                   +--------------+
                   |  ローカルPC   |
                   +--------------+
                          |
                          |
                          | git checkout -b new_branch
                          |
                          v
                   +--------------+
                   |   新しいブランチ  |
                   +--------------+
                          |
                          |
               git add  |   git commit
               git add  |   git commit
               git add  |   git commit
                          |
                          v
                   +--------------+
                   | ローカルでの変更  |
                   +--------------+
                          |
                          |
                  git push origin new_branch
                          |
                          |
                   +--------------+
                   |  GitHub上の新しいブランチ  |
                   +--------------+


スクショでですがやってみました。
---------------------------------------

![スクリーンショット 2024-04-10 054810.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750274/0e5d430b-0c50-3e3f-98f2-e13d0a0239c5.png)

![スクリーンショット 2024-04-10 055340.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750274/3acc2426-50cd-299e-cc68-eac56c13f91c.png)

![スクリーンショット 2024-04-10 055050.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750274/82d6ba25-de6c-a702-5755-b349d49dfffa.png)

![スクリーンショット 2024-04-10 063522.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750274/13baf9fb-9617-a76c-2733-a89a646d509a.png)

![スクリーンショット 2024-04-10 055114.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750274/833139d1-9c18-735e-5ff7-920ccd267089.png)

![スクリーンショット 2024-04-12 204107.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750274/dba309b3-3eb2-1228-af65-df9b45d0b5ba.png)


ブランチ名はcollarにして作成しました。
プッシュと書いてはあるのでに成功したように思います。
間違っていたら教えてください。

触ってみると数だとは思いますが難しいですね
ただ何となくですが理解はできつつあるように思います。
こうやって、いろいろな人が共有して物事を作成するのがIT業界の基本なのは理解できました。
当たり前ですが、記録を残す事を残して可視化するのはどの業界も変わりませんね！

最後に
---------------------------------------
最後まで読んでいただきありがとうございます。
初めてこういった文章作成をしたので読みにくい部分や変なところあると思いますが優しい目で見て頂ければと思います。
間違っている部分があればコメント記載してもらえると大変ありがたいです。
そんな貴方に不動産屋さんが質問
今住んでいる物件にこういった設備あったらいいのにを教えてください。
ありがとうございました。