編集済み 2 数週間前 によって ExtremeHow 編集チーム
Gitスタッシュウィンドウズマックリナックスコマンドライン開発バージョン管理ソースコントロールワークフロー生産性
翻訳が更新されました 2 数週間前
Gitは、ソフトウェア開発の世界で最も広く使用されているバージョン管理システムの1つです。2005年にLinuxカーネルの開発のためにLinus Torvaldsによって作成されました。それ以来、あらゆる規模のソフトウェアプロジェクトで、開発チームによって、時には1人の開発者によっても使用されています。Gitは、コードのバージョンを追跡し、複数の開発者とコラボレーションし、必要に応じて常にソフトウェアの以前のバージョンに戻ることができるようにするのに役立ちます。
Gitで管理されているプロジェクトで作業しているとき、ブランチを切り替える必要がある場合があります。たとえば、新しい機能に取り組んでいる最中に、すぐに修正する必要のある重大なバグレポートが突然発生することがあります。そのような場合、作業中の機能の進捗を失うことなく、コンテキストを切り替えてバグ修正に取り組むことをお勧めします。ここでGit Stashが便利になります。
Git stashは、開発者が変更をリポジトリにコミットせずに一時的に保存できる強力な機能です。作成した変更を「棚に置く」ことで、新しいブランチをチェックアウトしても、まだ他の人に見せる準備ができていないかもしれない新機能をコミットしないで済みます。準備が整ったら、これらの変更を作業コピーや別のブランチに適用できます。
git stash
コマンドを実行すると、変更がスタックに保存されます。このスタックには複数のスタッシュを含めることができ、後でリストされたスタッシュのいずれかを適用できます。単一のスタッシュは、次の要素の組み合わせで構成されています:
変更がスタッシュされると、作業ディレクトリがクリーンになり、ブランチを切り替えたりコードをコンパイルしたり、他に必要な作業を行ったりできます。そのタスクを完了した後、スタッシュをポップまたは適用して元の作業に戻ることができます。
Gitでスタッシュを使い始めるには、いくつかの基本的なコマンドに慣れる必要があります。ここでは最も重要なコマンドを見てみましょう:
変更を保存するには、次のコマンドを使用します:
git stash push
これによりローカルの変更が保存され、作業ディレクトリがHEADコミットと一致するように戻されます。その変更を一度も行ったことがないかのようです。
隠した変更を簡単に識別できるように、メッセージを含めることがしばしば役立ちます:
git stash push -m "your stash message"
このメッセージは、ラインレベルの変更を参照せずに、このスタッシュにどのような変更があるかを思い出すのに役立ちます。
保存したすべてのコレクションのリストを確認するには:
git stash list
このコマンドは、保存したすべてのスタッシュと関連するメッセージをリスト表示します。
最新のスタッシュを再適用するには:
git stash apply
このコマンドは、最新のスタッシュを現在の作業ディレクトリに適用しますが、スタッシュリストから削除しません。
特定のスタッシュを適用したい場合:
git stash apply stash@{n}
stash@{n}
を、適用したい特定のスタッシュに置き換えます。これはgit stash list
の出力から識別できます。
最新のスタッシュを適用してすぐに削除するには:
git stash pop
これは適用コマンドと似ていますが、適用されたスタッシュをリストから削除します。
特定のスタッシュを削除したい場合(適用せずに):
git stash drop stash@{n}
これにより、指定されたスタッシュが破棄されます。
すべてのスタッシュを削除したい場合、コマンドは:
git stash clear
このコマンドは保存された変更をすべて永久に破棄するため、注意して使用してください。
ブランチfeature-xyz
で新機能を開発しているとします。作業コピーにいくつかの変更を加えています。突然、メインブランチで重大なバグを修正する必要があります。
git status
git stash push -m "Saving work on feature-xyz"
git checkout main
git commit -a -m "Fixed critical bug"
git checkout feature-xyz
git stash pop
もし衝突があれば、解決して作業を続けます。
Git Stashは、より高度なオプションを提供して柔軟性を持たせています:
デフォルトでは、git stash push
は追跡ファイルへの変更のみをスタッシュします。追跡されていないファイルを含めるには:
git stash push -u
これにより、追跡ファイルと追跡されていないファイルの両方がアーカイブされます。
.gitignore
で明示的に除外されたファイル(無視されたファイル)もスタッシュしたい場合:
git stash push --all
ファイルの一部を選択的にアーカイブするには:
git stash -p
このコマンドは対話的で、スタッシュする特定の部分を選択できます。
ステージングされた変更(インデックス内の変更)を含む保存された変更を再適用するには:
git stash apply --index
これにより、インデックスに競合する変更がある場合、競合が発生する可能性があります。
スタッシュの適用と解除は一般的に簡単ですが、更新されたコードベースにスタッシュを適用するときに競合が発生することがあります。競合が発生すると、Gitはそれをマージ競合のようにマークします。影響を受けたファイルを編集して競合を手動で解決し、以下のコマンドで解決済みとしてマークする必要があります:
git add <file>
競合を解決したら、作業を続け、最終的に変更を提出できます。
Git Stashをより簡単かつ効果的に使用するためのいくつかのヒント:
-m
オプションを使用してスタッシュにラベルを付けます。これにより、後で簡単に識別できます。Git stashは、特にコミットしていない作業を保存し、リファレンスを一時的に変更するのに役立つ、開発者のアーセナルにおいて柔軟性のあるツールです。Git stashの使用方法を十分に理解することで、異なるタスク間の変更を管理しやすくなり、ワークフローの効率性と柔軟性を向上させることができます。
未完の作業を保存したり、重要なバグに集中したりするなど、Git stashの機能を適切にワークフローに組み込むことで、コードの変更処理が簡単で管理可能になります。Git stashに慣れてくると、それが開発ツールキットの不可欠な部分になることが分かるでしょう。
記事の内容に誤りがある場合, あなたは