私は複数の機能を同時に作業することが多いため、変更内容を隠しておき、他のタスクに切り替えている間に変更内容を忘れてしまうことがあります。リマインダーとして git フックとターミナル エイリアスを使用してみましたが、面倒すぎるか無視するのが簡単でした。したがって、より良い解決策を見つける必要がありました。
この記事はもともと 1 年以上前に私のブログに投稿されたものですが、何度も読み返しています。世界に再共有:)
Git は、情報を スナップショット のリストとして保存します。 スナップショットは、特定の時点でのリポジトリの保存されたバージョンです。各コミットは、git の世界におけるスナップショットを表します。
作業ツリーは、プロジェクトの 1 つのバージョンの単一のチェックアウトです。これらのファイルは、Git ディレクトリ内の圧縮データベースから抽出され、使用または変更できるようにディスク上に配置されます。これは、ステージングとコミットの前に作業を行う場所です。
Git Worktree は、Git stash の手間をかけずに、複数の Git ワーキング ツリーを同時に管理する方法です。これにより、リポジトリのサブディレクトリとしてブランチを操作できるようになり、関連性のない緊急の変更が必要な場合に変更を隠しておく手間が完全に軽減されます。
worktree モジュールを使用すると、リポジトリの同じルート ディレクトリ内の別々のサブディレクトリにあるプロジェクトの複数のバージョンをチェックアウトできます。従来のアプローチに関する次の図を例に挙げます:
この例では、2 つの隠し変更 (数百行のコードになる可能性があります) と 3 つのブランチ、feature-1、feature-2、および fix があります。 -1。 fix-1 ブランチの作業を終えてプッシュする頃には、私の脳は次のタスクに移り、再び思い出すまで以前の機能のことを完全に忘れてしまっているでしょう。
代わりに、ワークツリーを使用すると次のようになります:
ワークツリーの場合、ディレクトリ構造には、個別のディレクトリに各ワークツリー (ブランチ) が含まれます。これにより、現在作業しているディレクトリを変更するだけで、あるブランチから別のブランチにシームレスに切り替えることができます。このアプローチでの私の通常のワークフローは次のとおりです。
あるワークツリーから別のワークツリーに切り替えたいときは、まだワークツリーを作成していない場合は同じ手順で別のワークツリーを作成するか、VSCode で別のディレクトリを開いてハッキングを開始するだけです。すぐに。
ワークツリーの作成は、既存のブランチに対して git worktree add directory-name ブランチ名を実行するか、新しいブランチを作成するために git worktree add directory-name -b Branch-name を実行するのと同じくらい簡単です。
ブランチでの作業が完了したら、ワークツリーを安全に削除して、ディレクトリ構造の汚染を防ぐことができます。 git worktree delete directory-name を実行するだけです。これによって基礎となるブランチは削除されないため、後で安全に再度チェックアウトできます。
ワークツリーはリポジトリ ブランチのチェックアウトであるため、追跡されていないファイルはコピーされません。 .env などのファイルはコピーされないため、ワークツリーを作成した後に必ずコピーし、依存関係が存在する場合はインストールしてください。
また、ルート リポジトリ ディレクトリで実行すると、ワークツリー用に作成されたディレクトリが git ステータス ログに表示されることにも注意してください。しかし、何時間も仕事を忘れることに比べれば、こうした問題は私にとっては大したことではありません。
読んでいただきありがとうございます!私のブログで詳細を読んだり、GitHub スポンサーで私の仕事をサポートしたりできます!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3