logo

Git スタッシュ

ブランチを切り替えたいのに、現在のプロジェクトの不完全な部分に取り組んでいる場合があります。中途半端な作業をコミットしたくありません。 Git スタッシングを使用すると、これが可能になります。の git stash コマンド 現在のブランチをコミットせずにブランチを切り替えることができます。

以下の図は、リポジトリと作業ディレクトリに関するスタッシングのプロパティと役割を示しています。

Git スタッシュ

一般に、スタッシュの意味は「 何かを隠れた場所に安全に保管する 。」 Git における感覚は stash についても同じです。 Git はコミットせずにデータを一時的に安全に保存します。

スタッシュすると、作業ディレクトリの乱雑な状態が取り除かれ、今後使用できるように一時的に保存されます。 git stash では多くのオプションが利用可能です。いくつかの便利なオプションを以下に示します。

    Git スタッシュ Git スタッシュ保存 Git スタッシュリスト Git スタッシュの適用 Git スタッシュの変更 Git スタッシュ ポップ Git スタッシュ ドロップ Git スタッシュをクリアする Git スタッシュ ブランチ

作業を隠しておく

リアルタイムのシナリオで理解してみましょう。 2 つの異なるブランチから 2 つのファイルでプロジェクト GitExample2 に変更を加えました。私は混乱した状態にあり、まだファイルを完全に編集していません。したがって、将来使用するために一時的に保存したいと思います。それを隠して現在のステータスとして保存できます。隠しておくために、リポジトリの現在のステータスを見てみましょう。リポジトリの現在のステータスを確認するには、git status コマンドを実行します。 git status コマンドは次のように使用されます。

MVC Java

構文:

 $ git status 

出力:

Git スタッシュ

上記の出力から、追跡されていないファイルが 2 つあるというステータスがわかります。 デザイン.css そして 新しいファイル.txt リポジトリで利用可能です。一時的に保存するには、git stash コマンドを使用します。 git stash コマンドは次のように使用されます。

構文:

 $ git stash 

出力:

Git スタッシュ

指定された出力では、作業内容は git stash コマンドで保存されています。リポジトリのステータスを確認できます。

Git スタッシュ

ご覧のとおり、私の作品は現在の位置に隠されているだけです。これで、ディレクトリがクリーンアップされました。この時点で、ブランチを切り替えて作業することができます。

Git Stash Save (メッセージとともにスタッシュを保存):

Git では、変更をメッセージとともに隠しておくことができます。変更をメッセージとともに隠しておくには、以下のコマンドを実行します。

構文:

 $ git stash save '' 

出力:

Git スタッシュ

上記のスタッシュはメッセージとともに保存されます

Git スタッシュ リスト (保存されているスタッシュを確認する)

保存されたスタッシュを確認するには、以下のコマンドを実行します。

構文:

 $ git stash list 

出力:

Git スタッシュ

上記の場合、スタッシュを 1 つ作成しました。これは「」と表示されます。 stash@{0}: テストの WIP: 0a1a475 CSS ファイル '。

複数のスタッシュがある場合は、異なるスタッシュ ID を持つすべてのスタッシュがそれぞれ表示されます。以下の出力を考えてみましょう。

フルフォームpvr
Git スタッシュ

インデックス付きのすべてのスタッシュが表示されます。 隠し場所@{0}: 隠し場所@{1}: 等々。

Git スタッシュ適用

git stash コマンドを使用して、隠した変更を再適用できます。コミットを適用するには、git stash コマンドの後に apply オプションを使用します。次のように使用されます。

構文:

 $ git stash apply 

出力:

Git スタッシュ

上記の出力は最後のスタッシュを復元します。ここで、リポジトリのステータスを確認すると、ファイルに加えられた変更が表示されます。以下を考慮してください 出力:

Git スタッシュ

上記の出力から、リポジトリが stash する前の状態に復元されていることがわかります。出力が「」として表示されます コミット用にステージングされていない変更 。」

複数のスタッシュがある場合は、「git stash apply」コマンドの後にスタッシュ インデックス ID を指定して、特定のコミットを適用できます。次のように使用されます。

構文:

 $ git stash apply 

以下の出力を考えてみましょう。

出力:

Git スタッシュ

スタッシュを指定しない場合、Git は最新のスタッシュを取得して適用しようとします。

Git スタッシュの変更

スタッシュとその変更を追跡できます。 stash 操作前と stash 操作後のファイルの変更を確認するには、以下のコマンドを実行します。

構文:

 $ git stash show 

上記のコマンドは、隠蔽されているファイルとそのファイルに加えられた変更を表示します。以下の出力を考えてみましょう。

出力:

Git スタッシュ

上記の出力は、隠しファイルが 2 つあり、それらに対して 2 つの挿入が実行されたことを示しています。

ファイルに加えられた変更を正確に追跡できます。ファイルの変更された内容を表示するには、次のコマンドを実行します。

構文:

 $ git stash show -p 

ここで、-p は部分的なスタッシュを表します。指定されたコマンドにより、編集されたファイルとコンテンツが表示されます。以下の出力を考慮してください。

出力:

Git スタッシュ

上記の出力は、内容が変更されたファイル名を示しています。 git diff コマンドと同じように動作します。の git diff コマンドでも正確な出力が表示されます。

Git Stash Pop (隠した変更の再適用)

Git では、ユーザーは git stash Pop コマンドを使用して以前のコミットを再適用できます。ポップ オプションは、スタッシュから変更を削除し、作業ファイルに適用します。

git stash Pop コマンドは git stash apply とよく似ています。これら 2 つのコマンドの主な違いは、適用後にスタックからスタッシュを削除する stash Pop コマンドです。

構文:

 $ git stash pop 

上記のコマンドは、以前のコミットをリポジトリに再適用します。以下の出力を考えてみましょう。

出力:

Git スタッシュ

Git スタッシュ ドロップ (アンスタッシュ)

git スタッシュドロップ コマンドはキューからスタッシュを削除するために使用されます。通常、最新のスタッシュが削除されます。 stash drop コマンドは一度適用すると元に戻すのが難しいため、使用する前に注意が必要です。

元に戻す唯一の方法は、スタッシュを削除した後にターミナルを閉じない場合です。 stash drop コマンドは次のように使用されます。

構文:

Javaの文字列結合
 $ git stash drop 

出力:

Git スタッシュ

上記の出力では、最新のスタッシュ (隠し場所@{0}) 指定された 3 つの隠し場所からドロップされました。 stash list コマンドは、キュー内の使用可能なすべてのスタッシュをリストします。

特定のスタッシュをキューから削除することもできます。使用可能なスタッシュから特定のスタッシュを削除するには、stashdrop コマンドでスタッシュ ID を渡します。次のように処理されます。

構文:

 $ git stash drop 

キュー内に利用可能な 2 つのスタッシュがあり、最新のスタッシュを削除したくないが、古いスタッシュを削除したいとします。すると、次のように操作されます。

 $ git stash drop stash@{1} 

以下の出力を考えてみましょう。

Git スタッシュ

上記の出力では、コミット 隠し場所@{1} キューから削除されました。

ラウンド数学Java

Git スタッシュ クリア

git スタッシュクリア コマンドを使用すると、使用可能なすべてのスタッシュを一度に削除できます。利用可能なすべてのスタッシュを削除するには、以下のコマンドを実行します。

構文:

 $ git stash clear 

リポジトリ内に存在するすべてのスタッシュが削除されます。

出力:

Git スタッシュ

上記の出力では、すべてのスタッシュが削除されています。リポジトリ内に利用可能なスタッシュがないため、git stash list コマンドは空白です。

Git スタッシュ ブランチ

特定のブランチに作業を隠して、そのブランチでの作業を継続した場合。その場合、マージ中に競合が発生する可能性があります。したがって、作業を別のブランチに隠しておくとよいでしょう。

git stash Branch コマンドを使用すると、ユーザーは競合を避けるために作業を別のブランチに隠しておくことができます。このブランチの構文は次のとおりです。

構文:

 $ git stash branch 

上記のコマンドは新しいブランチを作成し、そこに隠した作業を転送します。以下の出力を考えてみましょう。

出力:

Git スタッシュ

上記の出力では、隠した作業が新しく作成されたテスト用ブランチに転送されます。これにより、master ブランチでのマージ競合が回避されます。