Sourcetreeを用いたGithubの基本的な使い方とxcodeの連携方法

# 今までの自分のGithubの使い方
そもそも自分はポートフォリオをGithubに上げてましたが、
Web上から編集したり、その都度ファイルをFinderからアップロードして更新しているような有様でした。
本記事はそのレベルの方向けの内容です
xcodeと連携してpushやpullくらいできるよーという方には**時間の無駄なので今すぐタブを閉じましょう**

GitとSourceTreeの比較がよくわかる素晴らしい記事があったのと内容と全く関係ないわけではないので
**・[SourceTreeで、マージとリベースを行う - Qiita](https://qiita.com/masatomix/items/07a37ee8d141ceb4fa6f)**
この辺も見ておくとより理解が深まるかもです(mergeとrebaseは誰もが通る難関なので、、)

# 本来のGithubの使い方
Githubは本来
- xcodeなどのコーディングツールで**コードを編集**
- Githubとコーディングツールを連携するツール(またはterminal)で**編集箇所を確認**
- 上記のツールで編集をGithubの**レポジトリ(大元のフォルダ的なもの？)に反映**
- branchを立ててさらなる**編集場所を提案(現場レベル)**
という使い方をするべきであり、Githubサイト上でレポジトリをゴリゴリいじるものではないのですw
(分かっちゃいたけど力技の方が早いので自分はイジイジしちゃってました)

これじゃいかんのでちゃんと勉強することに。

# xcodeとGithub上のレポジトリを連携
#### ダウンロード
この連携からの編集という作業はterminalでも出来ますが、ソフトの方が編集箇所の可視化具合がいいのでソフトで。
使うソフトは[Sourcetree](https://ja.atlassian.com/software/sourcetree)というものです。入れちゃいましょう
入れてからのアカウント作成までの手順は以下のどちらかを参照
こっちを試して
・[MacでのSourcetreeセットアップとGitHub連携とプルリクエスト作成までの手順](https://qiita.com/suzutatsu/items/817f58cfb6e69f56d134)
だめそうならこっちを試しましょう
・[Bitbucketを要求される場合](https://qiita.com/suzutatsu/items/817f58cfb6e69f56d134#bitbucket%E3%82%92%E8%A6%81%E6%B1%82%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88)
※ちなみにbitbucketはGithubと同様サービスでSourcetreeと開発元が同じなので無理くりすすめてるだけみたい
#### 連携
今回はローカルファイルをGithubレポジトリと連携します
起動しとくもの
- Githubに出したい・編集したいファイル(Finder上)
- terminal
- Sourcetree
- xcode
※Githubレポジトリをsourcetreeで直接編集したい場合はこの記事を最後までやればいけちゃいます
・[MacでのSourcetreeセットアップとGitHub連携とプルリクエスト作成までの手順](https://qiita.com/suzutatsu/items/817f58cfb6e69f56d134)

#### terminalで以下のコマンドを順次実行

```
$ cd Githubに出すファイルのプロジェクト(.xcodeproj)のディレクトリ
$ git init
Reinitialized existing Git repository in Githubに出すファイルのプロジェクト(.xcodeproj)のディレクトリ/.git/
ユーザ名noMacBook-Air:ディレクトリ名 ユーザ名
$ git remote add origin https://github.com/ユーザー名/レポジトリ名.git
```
**解説**
1行目:xcodeプロジェクトファイルのディレクトリを参照するようにします
2行目:そのディレクトリにGitのライブラリなどをぶち込んで、Gitのコマンドを使えるようにします
![git ディレクトリ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427937/f2b1aa13-60f0-4301-1420-4e303760d16a.png)
3行目:Gitを使えるようになったディレクトリとorigin以下で指定したGithub上のレポジトリを連携します

※追記

```
git remote add origin https://'github.user_name'@github.com/'github_user_name'/'repository_name'.git
```
や
**sourcetreeのverアップデート**
(どちらかまたは両方)
これをしないとうまく行かないという例があるようです(`invalid username...`と出るらしい)
うまく行かなかった人は試してみてください


#### sourcetreeとローカルフォルダを紐付け
新規→既存のローカル....→作成を選択していきます
![sourcetree- ローカルを追加1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427937/e5f35d0f-205e-62e8-7549-d26dbb54588c.png)
![sourcetree- ローカルを追加2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427937/88efc58d-abc3-2d4e-c036-e1ee06453d6e.png)
![sourcetree-ローカルを追加3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427937/e956f7cc-373d-734f-759a-a6f3144b30ed.png)
追加されたのでダブルクリックすると、新規ウィンドウが立ち上がります

#### remoteブランチにチェックアウト
※にこれを忘れてコミットやプッシュを行うと

```
remote: Invalid username or password.
```
と怒られるので注意してください。

- やり方
sourcetreeの`リモート`->`origin`->`master`(ここ)をダブルクリックしてremoteのmasterブランチをチェックアウトします


#### Githubに反映
紐付けたローカルファイルのうち、変更・編集すると左下の`作業ツリーのファイル`に出てきます
水色丸のチェックボックスをクリックすると`作業ツリーのファイル`が`Indexにステージしたファイル`になります
つまり、`変更箇所があったファイル`から`Githubにコミットするかもしれんファイル`になるわけです

![githubに反映1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427937/9b779f3e-22a6-da98-ff3d-4bfbecb0e80e.png)
![githubに反映2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427937/fa5534a2-8dac-0208-1f21-7e7220b19a5d.png)
左上のコミットを押すと、コミットする上での確認画面が出ます
コミットと同時にプッシュするのか(使い始めはとりあえずチェック入れときゃいい)
コミットした時のGithub上のコメントはどうするか(今回は`UI Fixed`)
を設定してコミットします
![githubに反映3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427937/15378dca-4338-185b-c11a-b2d4f554ea55.png)

**Ⅳ, 反映しないフォルダを指定したい時**
コミットする前に
高度な設定→編集(.gitignoreファイルを中身を`反映したくないフォルダ名/*`にする)→OK
で反映しないフォルダを指定することが可能です
![githubに反映-反映消す場合1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427937/010ffdb1-4d50-c0eb-edaa-7c1b2f88c562.png)
![githubに反映-反映消す場合2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427937/3215edfa-cd70-8497-803b-f7dfa30ebfba.png)

お疲れ様でした

# 参考文献
・[MacでのSourcetreeセットアップとGitHub連携とプルリクエスト作成までの手順](https://qiita.com/suzutatsu/items/817f58cfb6e69f56d134)
・[MacでのSourcetreeセットアップとGitHub連携とプルリクエスト作成までの手順（Bitbucketを要求される場合）](https://qiita.com/suzutatsu/items/817f58cfb6e69f56d134#bitbucket%E3%82%92%E8%A6%81%E6%B1%82%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88)
**・[githubを二段階認証に変更後に起こるエラーの対処方法 - Qiita](https://qiita.com/sayama0402/items/670b6b650ebdd8680a0b)**
**・[SourceTreeで remote invalid username or password となってGithubと接続できない時の対策 - Qiita](https://qiita.com/YKEI_mrn/items/13be547b79dcb3de71b7)**
**・[GitHub - SoucreTreeでGitHubにPUSHするとInvalid username or passwordになる｜teratail](https://teratail.com/questions/136493)**
**・[SourceTree とGitHubの連携失敗を乗り越える、なおBitbucket - Qiita](https://qiita.com/harinezumilove1106/items/e8d8375e295a0de54abf)**
**・[SourceTreeに怒られたときの対処方法 - Qiita](https://qiita.com/nejiko96/items/bb99f7b5f6541ec096e9)**
**・[Gitでやらかした時のための基本操作（Sourcetree編） - Qiita](https://qiita.com/nnishimura/items/b5410e35f3a292a55244)**