上級者向けツール:rebase、stash、cherry-pick、タグ
Gitの基本を理解している人と、自信を持って使いこなせる人を分ける上級ツールを学びましょう。rebaseをmergeの代替として、歴史をクリーンにするケースと複雑化させるケースを解説します。作業中の変更を一時的に保存するstash、特定のコミットを選択的に取り込むcherry-pick、リリースをマークするタグの使い方を習得します。
- 変更を失うことなく、タスク間を切り替えるためのgit stashの使用方法を習得できます。
- rebaseとmergeの違いを理解し、状況に応じて適切に使い分けられるようになります。
- インタラクティブなrebaseを使用したコミット履歴の編集方法と、リリースバージョンのタグ付けを習得します。
Phần đầu bài giảng
問題: 作業中の変更を一時保存する方法
- 緊急のバグ修正が現在の作業を中断
- 未完成のコードはコミットできない
- 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}
Bài giảng đầy đủ dành cho thuê bao
Còn 25 slide nữa trong phiên bản đầy đủ.
Video, toàn bộ slide, ghi chú, bài kiểm tra, gia sư AI và phỏng vấn sẽ mở sau khi đăng nhập và đăng ký thuê bao.
Đăng nhập hoặc đăng ký Đăng ký thuê baoNội dung bài giảng
- 問題: 作業中の変更を一時保存する方法
- 変更の保存と確認
- 一時保存した変更の復元
- スタッシュの落とし穴
- ブランチのマージの仕組み
- Rebase: コミット履歴を書き換える
- 使い分けの実践的シナリオ
- Rebaseの危険性:起こりうる問題点
- リベースとは?その目的
- リベースの実行手順
- リベース時のコンフリクト解決
- インタラクティブrebase:コミット履歴のエディタ
- インタラクティブrebaseの主要コマンド
- 実践:理想的な履歴を作成する
- 注意:公開済み履歴の変更について
- 共有ブランチでrebaseをしてはいけない理由
- 失敗したrebaseからの復旧方法
- 安全な履歴修正
- Gitのcherry-pickが必要な理由
- git cherry-pickの使い方
- cherry-pick vs merge vs rebase:使い分けのポイント
- Gitタグ:重要なコミットのためのしおり
- アノテーション付きタグと軽量タグの作成
- リモートリポジトリへのタグの公開
- シナリオ:開発中の緊急ホットフィックス対応
- rebaseとcherry-pickによる変更の統合
- よくあるミスとその回避方法
- まとめ:Gitマスターへの道
Bài viết liên quan đến bài học này
- git rebase: cách hoạt động, chế độ tương tác và gộp commit
- Lệnh Git: bảng tra cứu với ví dụ dùng hằng ngày
- Git merge và rebase: nên chọn cái nào cho nhóm
- git stash: cách cất tạm thay đổi và lấy lại
- Câu hỏi về Git khi phỏng vấn: 25 câu hỏi và đáp án
Tất cả bài giảng của khóa học
- はじめに:ゼロから始めるGit - 自信を持って使える開発者を目指して
- Gitはなぜ必要なのか?~採用で求められるスキル~
- インストールとセットアップ:Gitの初回起動準備
- 最初のリポジトリ: init、add、commit、そしてインデックスの魔法
- Git履歴の読み方: log, diff, showと過去の履歴を辿る
- ブランチ: コードの並行現実
- ミスをなかったことに:restore、reset、revert ─ 正しい使い方と危険な落とし穴
- GitHubとリモートリポジトリ: クラウドでのコード管理
- チームワーク:フォーク、フィーチャーブランチ、プルリクエスト
- マージコンフリクト:慌てずに理解して解決する
- 実践的なチーム開発におけるGitワークフロー:最適な選択方法
- 上級者向けツール:rebase、stash、cherry-pick、タグ
- 最終プロジェクト:実際のチーム開発をシミュレートする