Git に 1つのファイルをスタッシュする

Abdul Jabbar 2023年1月3日
Git に 1つのファイルをスタッシュする

巨大なプロジェクトに取り組んでいると、さまざまな理由で作業状態が乱雑になることがあります。

その場合、うまく機能させるためにしばらくの間ブランチを切り替える必要があります。この状況で直面する可能性のある問題は、後でこの点に近づくために、半分完了した作業にコミットする必要がないことです。

この問題の解決策は、git stash コマンドです。git stash コマンドを使用すると、作業ディレクトリの状態を一時ファイルに一時的に保存できます。

、ブランチを切り替えて目的の作業をコミットし、その後、コマンド git stash を使用して保留にした作業に戻ることができると言えます。

言い換えれば、git stash コマンドは非常に単純であると言えます。作業ディレクトリの現在の状態とインデックスを stash ファイルに保存します。これは、インデックスまたは作業ディレクトリにコミットされた変更がないことを意味します。

スタッシングは、作業ディレクトリの無関係な状態、つまり、変更された追跡ファイルとステージングされた変更を取得し、後で別のブランチを使用して再適用できる未完成の変更のスタックデータ型に保存します。

作業中に、多くの変更を加えたり、ダーティファイルを追加したりする場合がありますが、スタッシュすると、Git は作業ディレクトリのクリーンなスナップショットを 1つだけ保存します。

ファイルをスタッシュするということは、このファイルのコンテンツをスタッシュにプッシュすることを意味することを知っておく必要があります。ファイルを再度変更すると、作業ディレクトリではなく、stash で変更されます。したがって、ファイルを隠してから変更しないでください。

stash save コマンドを使用してファイルを隠しておく必要があります。作業ディレクトリにすべての変更を隠したい場合は、stash save --all コマンドを使用する必要があります。ファイルのスタッシュを解除する場合は、stash pop コマンドを使用する必要があります。

Git に 1つのファイルのみを隠しておく手順

たとえば、7つのファイルがあり、それらすべてを変更したとします。ここで、現在のリポジトリにある 7つのファイルのうち 1つだけを隠しておくために実行する必要がある手順を確認します。

  • 変更されたファイルの表示

    まず、コマンド git status を実行して、変更されたファイルのリストを調べます。

    git status
    
  • ステージングファイル

    リストを調べた後、コマンド git add を実行して、7つのファイルすべてをステージングします。

    git add .
    
  • ファイルのステージングを解除する

    すべてのファイルをステージングした後、次のステップは、コマンド git reset を使用して file2 のステージングを解除することです。

    git reset file2
    
  • ファイルを隠します

    次に、コマンド git stash を使用して file2 を隠し、現在のリポジトリの現在のコミット済みステージに戻します。

    git stash --keep-index
    

    1つのファイルのみを格納できるもう 1つの方法は、次のコマンドを実行することです。

    git stash save -p "commit message"
    

上記の方法を使用して、スタッシュに追加するブロックを選択できます。また、ファイルで作業したことがある場合は、コミットする前に変更を隠して、作業ファイルでコミットが行われるようにすることができます。

このコマンドは、インデックスに追加された変更(段階的な変更)と、Git によって現在追跡されているファイルに加えられた変更(段階的でない変更)を隠します。

スタッシングは、作業コピーの現在の状態のスナップショットを取得し、スナップショットを保存してから、クリーンな作業コピーの状態に戻す方法です。

インデックスに変更を追加したら、それらをコミットできます。インデックスではなく作業ディレクトリに変更を隠したい場合は、--keep-index オプションを使用します。隠された変更はいつでも再適用できます。

ファイルを隠した後、それをリポジトリにコミットする必要があります。私たちはそれをすることを忘れてはなりません。
著者: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

関連記事 - Git Stash