備忘：ローカルで作成したフォルダを後からGitおよびGithubに登録する（Windows）

## ローカルで作成したフォルダを後からGitおよびGithubに登録する（Windows）

- 既にPC内に存在しているフォルダを、既に存在している中央リポジトリ(githubサーバー)を、SourceTreeで紐づける場合の手順です
- 【注意】かなり独自のやり方で無理矢理感があるので正しい公式なやり方ではないと思う

### **手順**

---


【1】 SourceTreeを起動します

---

【2】 画面上部の「ファイル」メニューの「新規/クローンを作成する」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/bd6785a2-9397-464c-b2a9-4607a02433ca.png)

---


【3】 画面上部の「＋」ボタンをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/1ee53b06-17c7-472a-95d2-1d8c83ddfd87.png)

---


【4】「Create a repository」の画面で以下の内容を入力して、「作成」ボタンをクリックします
    - 保存先のパス：既にPC内に存在しているフォルダを選択
    - 名前：↑を入力すると自動で入ります
    - プルダウンはGitを選択
    - **次のアカウントでリポジトリを作成はチェックを入れない**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/74f81ae5-f0b1-4d78-92bb-9fd4424b566a.png)

---


【5】 以下のような警告は、「はい」を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/867c9575-7b1f-47db-9b2c-02584599e909.png)

---

【6】 **未コミットのファイルやフォルダがある場合はここでPushはせずにコミットだけしておく。するとmasterにコミットされた状態となる**

---

【7】 次の画面の右上の「リモート」を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/2cc1582d-872f-4578-b264-e97ad510dba4.png)

---

【8】 表示された以下のダイアログで、「設定」を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/652ddf01-3d25-4d9d-b486-823bc377a778.png)

---

【9】 次に表示されたモーダル画面の左下の「追加」ボタンを押下します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/a18bac4a-9d67-4944-b644-f5b425d2fbf1.png)

---

【10】 次に表示されたリモートの詳細設定画面で以下の内容を入力して、「OK」ボタンをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/fd8368f9-51ae-410c-af57-80cc10042071.png)
- 必要な情報
    - リモート名：origin
    - デフォルトリモートのチェックをON
    - URL/パス：既に存在している中央リポジトリ(githubサーバー)のURL(.gitまでのパス)
- 外部サービスとの拡張統合オプション
    - Remote Account
        - Generic Accountを選択
    - Legacy Account Settings
        - ホストタイプ：Github
        - ルートURL：そのままでOK
        - ユーザ名：自分のGithubユーザ名

---

【11】 元のリポジトリ設定のモーダル画面も、「OK」ボタンを押下して閉じます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/06d10dbc-b885-4487-b6e2-4b451acf4a55.png)

---

【12】 左ペインのリモート＞originを右クリックして、「originからフェッチ」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/72584785-de4b-41c6-a1b5-375c1cfc24d7.png)

---

【13】 左ペインのリモート＞origin＞mainを右クリックして、「origin/mainをチェックアウト」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/fa1a96f8-5b53-4c55-9764-52789e6f3676.png)

---

【14】 チェックアウトのモーダル画面で、以下の入力値を確認（基本デフォルトのままでいいはず）してOKを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/70ad7819-562c-45f6-a266-eda689340399.png)

- チェックアウトするリモートブランチ：
    - 既に存在している中央リポジトリ(githubサーバー)側のチェックアウトしたいブランチを選択
        - mainとか、masterとか、develop
- 新ブランチ名
    - ローカル側のブランチ名
        - 原則リモートと同じでOK
- ローカルブランチでリモートブランチを追跡するの**チェックはON**

---

【15】カレントをmainブランチ（リモートから落としてきたブランチ）にした状態で、右上のターミナルを開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/1cdda511-c7ad-49af-bc60-4074c594f954.png)

---

【16】 以下のコマンドを手動で実行

**実行前に3wayマージできるツールを「ツール＞オプション＞Diffタブ」で設定しておくとよい**

例：masterブランチを現在のブランチにマージする場合
```bash
git merge master --allow-unrelated-histories
```
あるいは、リモートのmasterをpullする場合

```bash
git pull origin master --allow-unrelated-histories
```

**ここで以下のように競合する場合は、その後はGUI上でマージ操作をする**
```bash
$ git merge master --allow-unrelated-histories
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
```

**正しくマージされると以下のように、親の違うツリーが１つにマージされる**
```bash
$ git merge master --allow-unrelated-histories
Merge made by the 'recursive' strategy.
 sample.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 sample.txt
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53477/00b55c8b-1ee3-4b99-81d8-3d569f89a13b.png)



---

【17】 あとは普通に使うだけ