git stash 作業内容を退避させたい

git stashコマンドは、現在の作業ディレクトリの変更を一時的に退避させ、作業内容を一時的に保存(スタッシュ)するためのGitの機能です。この機能を使うことで、現在の変更内容をコミットせずに、別のブランチへ切り替えたり、他の作業を行ったりすることができます。

git stashコマンドは、現在の作業ディレクトリの変更を一時的に退避させ、作業内容を一時的に保存(スタッシュ)するためのGitの機能です。この機能を使うことで、現在の変更内容をコミットせずに、別のブランチへ切り替えたり、他の作業を行ったりすることができます。

以下では、git stashの基本的な使い方と、スタッシュの管理方法について説明します。

#git stashの基本的な使い方

1. 作業内容をスタッシュに退避する

現在の作業内容を一時的に退避させるには、以下のコマンドを使用します。

git stash

このコマンドを実行すると、ワークツリーのすべての変更(追跡されているファイルと未追跡のファイル)をスタッシュに保存し、作業ディレクトリは直前のコミットの状態に戻ります。

  • コマンドオプション:
    • git stash save "メッセージ": スタッシュにメッセージを追加して、後からわかりやすくします。
    • git stash --include-untrackedまたはgit stash -u: 未追跡のファイルもスタッシュに含めます。

2. スタッシュした内容を確認する

スタッシュした内容の一覧を確認するには、以下のコマンドを使用します。

git stash list

このコマンドは、スタッシュの内容を一覧表示します。それぞれのスタッシュには、stash@{n}という形式の識別子が付与され、nはスタッシュの番号を示します。

3. スタッシュした変更を再適用する

保存したスタッシュを再度作業ディレクトリに適用するには、以下のコマンドを使用します。

git stash apply

このコマンドは、最新のスタッシュ(stash@{0})を作業ディレクトリに再適用します。

  • 特定のスタッシュを適用する: 特定のスタッシュを再適用する場合は、スタッシュIDを指定します。

    git stash apply stash@{2}

4. スタッシュの削除

スタッシュした内容が不要になった場合は、以下のコマンドで削除します。

  • 最新のスタッシュを削除:

    git stash drop
  • 特定のスタッシュを削除:

    git stash drop stash@{2}
  • すべてのスタッシュを削除:

    git stash clear

5. スタッシュを適用して削除する

スタッシュを適用すると同時に、スタッシュのリストから削除したい場合は、以下のコマンドを使用します。

git stash pop

このコマンドは、git stash applygit stash dropを組み合わせたもので、スタッシュを再適用した後、自動的にスタッシュを削除します。

6. スタッシュを新しいブランチに適用する

新しいブランチを作成し、スタッシュをそのブランチに適用する場合は、以下のコマンドを使用します。

git stash branch <new-branch-name>

このコマンドは、新しいブランチを作成し、最新のスタッシュをそのブランチに適用してから、スタッシュを削除します。

例: git stash の使用例

  1. 現在の作業内容をスタッシュに退避

    git stash save "WIP: 作業中の変更を一時保存"
  2. ブランチを切り替える

    git checkout feature/new-feature
  3. 元のブランチに戻り、スタッシュを再適用

    git checkout main git stash apply
  4. スタッシュが不要になったら削除

    git stash drop

#git stashの注意点

  • 未追跡ファイルに注意: デフォルトでは、git stashは追跡されているファイルのみをスタッシュに保存します。未追跡のファイルも含めたい場合は、uオプションを使う必要があります。
  • スタッシュの競合: スタッシュを再適用するときに、作業ディレクトリの状態と競合が発生する場合があります。競合を解消する必要があります。
  • スタッシュはあくまで一時的な保存: git stashは、変更を一時的に保存するためのものであり、長期間保持するためのものではありません。必要な変更は早めにコミットするようにしましょう。

#まとめ

git stashは、現在の作業内容を一時的に退避させるための強力なツールで、ブランチの切り替えや他の作業を行う際に非常に便利です。適切に使用することで、作業を中断せずに柔軟に対応できます。スタッシュの管理方法を理解し、必要に応じて効率的に活用しましょう。

タグ一覧