おはよう。今日はXcodeのSource Control(=Git)で、事故らずに開発するための“戻し方”を、手順込みでまとめる。CommitとStashが分かるだけで、開発は「壊れたら終わり」から「壊れても戻れる」に変わる。初心者が一番最初に覚えるべき安全運転だ。
◾️まず用語を日本語に置き換える
Source Control:変更履歴を管理して、いつでも戻せるようにする仕組み(Xcodeではこの名前で出る)
Git:その仕組みの代表格の名前。XcodeのSource Controlの裏側がだいたいこれ
Commit:セーブポイントを作る(ここまではOKという保存)
Stash:いま途中の変更を“引き出しにしまう”(机の上を一旦空にする)
Apply Stash:しまった作業を“机に戻す”
Pop Stash:戻したうえで“引き出しから消す”(戻して終わったら消える)
◾️1分でわかる:CommitとStashの違い
Commit=「保存」:確定した安全な状態を残す。いつでも戻れる。
Stash=「一時退避」:まだ確定したくない途中作業をしまう。あとで戻せる。
この2つで“事故らない”。
◾️実務で一番使う型:「安全地点→実験→ダメなら戻す」
CSVローダーやCSV差し替えみたいな“壊れやすい作業”は、この型でやる。
- まず動く状態を作る
- Commitする(セーブポイント)
- 実験する(CSVローダー変更・CSV差し替え)
- うまくいかなかったらStashする(変更をしまう)
- すぐ安全な状態に戻れる
- 必要ならApply Stashで続きに戻るこれを知ってるだけで、手動でファイルを戻す必要が消える。
◾️Xcodeでの具体手順:Commit(セーブポイントを作る)
- 左のナビゲータで「Source Control」または「Changes」を開く
- 変更ファイルが一覧に出る(緑/青のMとかAとか)
- メニューで Source Control → Commit…
- 変更内容を確認して、メッセージを書く 例:baseline: build ok 例:csv loader: parse quotes
- Commit
コツ:メッセージは「何ができた状態か」を短く。
「動く」「ビルド通る」「CSV読み込みOK」みたいな“戻りたい地点”を書く。
◾️Xcodeでの具体手順:Stash(作業途中を退避)
「いまの変更、まだCommitしたくない。でも一旦元に戻したい」って時に使う。
- メニュー Source Control → Stash Changes…
- 名前を付ける(重要) 例:wip: csv rfc4180 trial 例:wip: category bug hunt
- Stash
すると何が起きる?
変更が“引き出しに入る”。作業ツリーがきれいになる。さっきまでの変更が一旦消える。つまりセーブポイント(Commit)状態に戻る。
◾️Stashを戻す:Apply / Pop(ここ超重要)
- Source Control のサイドバーに「Stashed Changes」が出る
- そこを開く
- 使いたいスタッシュを右クリック Apply Stash:戻す(スタッシュは残る) Pop Stash:戻して消す(戻したら引き出しから消える)
使い分け:
まだ試行錯誤する → Apply(保険で残す)
もう終わった → Pop(片付け)
◾️過去のCommitに戻る:Switch / Checkout(「セーブ地点に移動」)
「Switch to “〇〇〇”…」がまさにそれ。意味は「そのコミット時点の状態に切り替える」。
- Repositories / History を開く(コミット一覧が見える画面)
- 戻りたいコミットを右クリック
- Switch to “” を選ぶ(またはCheckout表記の場合もある)
注意:この操作は“時間移動”みたいなもの。その地点にいる間は、未来(最新)の変更は一旦見えなくなる。怖く見えるけど普通。戻る時は、同じように最新コミットにSwitchすればいい。
◾️Tag(目印)を付けると、さらに迷子にならない
コミットが増えるほど「どれが安全だったっけ?」ってなる。Tagは“ここが基地”って札。
- コミット一覧で、安全なコミットを右クリック
- Tag “”…
- 例:v0.1-build-ok / baseline-csv-okタグを付けると、「hashの羅列」じゃなく「名前」で戻れるようになる。初心者ほど効く。
◾️Stashが必要になる代表パターン
コードを変えて試したい。データ差し替えで挙動が変わるか検証したい。でもCommitするほど確定してない。一旦元に戻して原因切り分けをしたい。こういう場面はStashが最強。机を空にして、落ち着いて切り分けできる。
◾️最後にRemote(GitHub)の話:ローカルだけだと“PCが壊れたら終わり”
ローカルCommitは強いけど、Macが壊れたりプロジェクトが飛んだら終わる。そこでRemote=クラウド側の保管庫を使う。代表がGitHub。やることは超シンプルで、概念はこれだけ。Remote(GitHub)にリポジトリを作る。ローカルの履歴をPushしてバックアップする。別PCでもPullで復元できる。
ここでよくある疑問が「iCloudに保存してるから大丈夫じゃない?」ってやつ。iCloudは“ファイルそのもの”を同期して守るのが得意。一方でGitHubは“変更の履歴(差分)”を積み上げて守るのが得意。だから、iCloudは「最新版が残る」には強いけど、「いつの状態に戻したい」「どこから壊れたか追いたい」「チームや別PCで同じ履歴を共有したい」みたいな用途はGitHubのほうが圧倒的に向いてる。両方やるとさらに強い。
初心者のおすすめ運用:大きな節目(動いた、機能完成、データ整った)でCommit。そのあとPush(クラウドにも保存)。これで「戻れる」+「失くさない」が揃う。
◾️まとめ:順番はこれ
- XcodeでCommitを習慣化(セーブポイント)
- Stashで途中作業を安全に退避
- Tagで基地を作る
- 最後にGitHubでバックアップ(Push)
さあ、こういった知識を一つ知るだけで、これまでと違った世界が見えてくる。知ってるのと知ってないのでは全然違う。効率も、事故の確率も。だからこそ、基本から順番に身につけていこう。さあ、今日も愛と感謝を胸に。バイバイ。

