上級者向けツール:rebase、stash、cherry-pick、タグ
Gitの基本を理解している人と、自信を持って使いこなせる人を分ける上級ツールを学びましょう。rebaseをmergeの代替として、歴史をクリーンにするケースと複雑化させるケースを解説します。作業中の変更を一時的に保存するstash、特定のコミットを選択的に取り込むcherry-pick、リリースをマークするタグの使い方を習得します。
- 変更を失うことなく、タスク間を切り替えるためのgit stashの使用方法を習得できます。
- rebaseとmergeの違いを理解し、状況に応じて適切に使い分けられるようになります。
- インタラクティブなrebaseを使用したコミット履歴の編集方法と、リリースバージョンのタグ付けを習得します。
จุดเริ่มต้นของบทเรียน
問題: 作業中の変更を一時保存する方法
- 緊急のバグ修正が現在の作業を中断
- 未完成のコードはコミットできない
- Git stashが変更を一時保存
- 追跡対象ファイルも未追跡ファイルも保存可能
- ワーキングディレクトリをクリーンな状態に戻す
新しい機能の開発中に、突然のバグ修正が入る場面を想像してください。作業を途中で止めたくはないけれど、未完成のコードをコミットするわけにもいきません。そんな時のために、git stashというデジタルな一時保存機能があります。ゲームの一時停止ボタンのようなもので、現在の進捗を保存しておき、別の作業に取りかかることができます。戻ってきた時には、-uフラグを忘れなければ未追跡ファイルも含め、すべてが保存したままの状態で再開できます。これで、複数のタスクを同時に頭に入れておく必要はありません。
変更の保存と確認
- git stash save — 変更をスタッシュに保存
- git stash list — 保存されたスタッシュの一覧を表示
- 各スタッシュに一意のIDが割り当てられる
- stash@{0} — 直近に保存された変更
- スタッシュはワーキングディレクトリの状態を保存
実際にgit stashをどのように使うか見ていきましょう。git stash saveコマンドは、ワーキングディレクトリとステージングエリアの変更をすべて保存し、クリーンな状態に戻します。保存した変更は特別な保管場所に格納され、git stash listで確認できます。stash@{0}のような一意のIDで管理され、タスク間を素早く切り替えたい時に便利です。作業の進捗を失うことなく、効率的に作業を進められます。
# 現在の変更を保存
# ログインフォームの新機能を一時保存
git stash save "WIP: ログインフォームの新機能"
# 保存されたスタッシュの一覧を確認
git stash list
# 直近のスタッシュの内容を確認
git stash show -p
一時保存した変更の復元
- git stash pop — 最後のスタッシュを適用して削除
- git stash apply — スタッシュを削除せずに適用
- コード変更時にコンフリクトが発生する可能性あり
- コンフリクトは手動で解決する必要あり
- stash@{n} — 特定のスタッシュを指定
一時的に保留にしていた作業に戻る際は、2つの選択肢があります。git stash pop は最後に保存した変更を適用し、スタッシュリストから削除します。変更を確認したい場合や複数回適用したい場合は、git stash apply を使用してください。この場合、変更はスタッシュに残ったままになります。重要な点として、スタッシュを保存してからコードに変更があった場合、コンフリクトが発生する可能性があります。その場合、Gitが問題を通知しますので、手動でコンフリクトを解決する必要があります。
# 最後に保存したスタッシュを復元
git stash pop
# または削除せずに適用
git stash apply
# インデックスを指定して特定のスタッシュを適用
git stash apply stash@{1}
บทเรียนฉบับเต็มใช้ได้เมื่อสมัครสมาชิก
ฉบับเต็มมีสไลด์เพิ่มอีก 25 สไลด์
วิดีโอ สไลด์ทั้งหมด โน้ต แบบทดสอบ AI ติวเตอร์ และการสัมภาษณ์จะเปิดหลังเข้าสู่ระบบและสมัครสมาชิก
เข้าสู่ระบบหรือลงทะเบียน สมัครสมาชิกเนื้อหาบทเรียน
- 問題: 作業中の変更を一時保存する方法
- 変更の保存と確認
- 一時保存した変更の復元
- スタッシュの落とし穴
- ブランチのマージの仕組み
- Rebase: コミット履歴を書き換える
- 使い分けの実践的シナリオ
- Rebaseの危険性:起こりうる問題点
- リベースとは?その目的
- リベースの実行手順
- リベース時のコンフリクト解決
- インタラクティブrebase:コミット履歴のエディタ
- インタラクティブrebaseの主要コマンド
- 実践:理想的な履歴を作成する
- 注意:公開済み履歴の変更について
- 共有ブランチでrebaseをしてはいけない理由
- 失敗したrebaseからの復旧方法
- 安全な履歴修正
- Gitのcherry-pickが必要な理由
- git cherry-pickの使い方
- cherry-pick vs merge vs rebase:使い分けのポイント
- Gitタグ:重要なコミットのためのしおり
- アノテーション付きタグと軽量タグの作成
- リモートリポジトリへのタグの公開
- シナリオ:開発中の緊急ホットフィックス対応
- rebaseとcherry-pickによる変更の統合
- よくあるミスとその回避方法
- まとめ:Gitマスターへの道
บทความเกี่ยวกับบทเรียนนี้
- git rebase: ทำงานอย่างไร โหมดโต้ตอบ และการ squash คอมมิต
- คำสั่ง Git: ชีตสรุปพร้อมตัวอย่างสำหรับใช้ทุกวัน
- Git merge กับ rebase: ควรเลือกแบบไหนสำหรับทีมของคุณ
- git stash: พักการเปลี่ยนแปลงชั่วคราวและกู้คืนได้อย่างไร
- คำถาม Git ในการสัมภาษณ์งาน: 25 ข้อพร้อมคำตอบ
บทเรียนทั้งหมดในคอร์สนี้
- はじめに:ゼロから始めるGit - 自信を持って使える開発者を目指して
- Gitはなぜ必要なのか?~採用で求められるスキル~
- インストールとセットアップ:Gitの初回起動準備
- 最初のリポジトリ: init、add、commit、そしてインデックスの魔法
- Git履歴の読み方: log, diff, showと過去の履歴を辿る
- ブランチ: コードの並行現実
- ミスをなかったことに:restore、reset、revert ─ 正しい使い方と危険な落とし穴
- GitHubとリモートリポジトリ: クラウドでのコード管理
- チームワーク:フォーク、フィーチャーブランチ、プルリクエスト
- マージコンフリクト:慌てずに理解して解決する
- 実践的なチーム開発におけるGitワークフロー:最適な選択方法
- 上級者向けツール:rebase、stash、cherry-pick、タグ
- 最終プロジェクト:実際のチーム開発をシミュレートする