ホームページ > 記事 > ウェブフロントエンド > Git Checkout を廃止する: 代わりに Git Switch と Git Restore を使用する
日常の仕事で Git を使用している場合、git checkout は一般的なコマンドです。ブランチを切り替えるためによく使用されます。ドキュメントを見ると、「ブランチを切り替えるか、作業ツリー ファイルを復元する」という表現が見られます。しかし、UNIX は 一つのことを実行し、それをうまく実行する であるべきです。これは混乱を招くため、Git 2.23 ではこれを置き換える 2 つのコマンドが導入されました。
その仕組みを紹介する前に、関連する Git の概念を簡単に理解する必要があります。
作業コピー (作業ツリー ファイル): ハードディスク上に表示されるリポジトリ内のファイルを指します。
インデックス (ステージング領域またはキャッシュ): git が追加されているか、または git commit を実行した場合にコミットされるものを指します。
HEAD: 「現在の」または「アクティブな」ブランチを指します。ブランチをチェックアウトする必要がある場合 (ブランチを作業コピー内の内容と一致させようとする試みを指します)、チェックアウトできるのは 1 つだけです。一度にチェックアウトできます。
git checkout はブランチをチェックアウトしたり、新しいブランチを作成してそこにチェックアウトしたりできます:
# Switched to branch 'test' $ git checkout test # Switched to a new branch 'test' $ git checkout -b test # Switch back to the previous branch $ git checkout - # Switched to a commit $ git checkout master~1
また、git switch はブランチ関連を引き継ぐために使用されるため、次のこともできます。
# Switched to branch 'test' $ git switch test # Switched to a new branch 'test' $ git switch -c test # Switch back to the previous branch $ git switch - # Switched to a commit $ git switch -d master~1
最初に述べたように、git checkout は作業ツリー ファイルを復元することもできます。機能のこの部分は git list によって引き継がれます。
以前は、git checkout -- main.c を使用してインデックスから作業ツリー ファイルを復元できました。構文は git checkout [treeish] --
# Restoring the working tree from the index $ git checkout -- ./main.c # Restoring index content from HEAD $ git reset -- ./main.c # Restoring the working tree and index from HEAD $ git checkout HEAD -- ./main.c
HEAD からインデックスの内容を復元する場合、使用できるのは git replace のみであり、git checkout には対応するオプションがないことに注意してください。
グラフで表示:
git list を使用すると、どのファイルをどこに復元するかを簡単に決定できます。次のオプションは復元場所を指定します:
-W --worktree -S --staged
デフォルトでは、 -W と --worktree は、オプションが指定されなかった場合と同様に、インデックスから作業ツリーを復元します ( git stop -- ./main.c など)。一方、-S と --staged は HEAD からインデックスの内容を復元します。両方を渡すと、インデックスと作業ツリーが HEAD から復元されます。
例:
# Restoring the working tree from the index $ git restore -- ./main.c # Equivalent to $ git restore --worktree -- ./main.c # Restoring index content from HEAD $ git restore --staged -- ./main.c # Restoring the working tree and index from HEAD $ git restore --staged --worktree ./main.c
グラフで表示:
上記はデフォルトです。別のコミットから復元したい場合は、--source オプションを使用できます。例:
# Restore `./main.c` in the working tree with the last commit $ git restore -s HEAD^ -- ./main.c # Equivalent to $ git restore --source=HEAD^ -- ./main.c
もう 1 つの役に立つ git list ケースは、誤って処理されたファイルを復元することです。例:
# Incorrectly deleted files $ rm -f ./main.c # Quickly restore main.c from index $ git restore ./main.c
バッチリカバリの場合:
# Restore all C source files to match the version in the index $ git restore '*.c' # Restore all files in the current directory $ git restore . # Restore all working tree files with top pathspec magic $ git restore :/
git checkout の機能は明確に区別されています。git switch はブランチの切り替えに使用され、git listore は作業ツリー ファイルの復元に使用されます。これらは、UNIX の哲学に沿って、より明示的なセマンティクスを提供します。
どちらのコマンドも 2019 年に提案され、現時点では実験段階です。変更される可能性がありますが、通常は大きな変更ではないため、わかりやすくなり、混乱が少なくなり、今すぐ使用できます。
これが役立つと思われた場合は、 ニュースレターの購読を検討してください Web 開発に関するさらに役立つ記事やツールをご覧ください。読んでいただきありがとうございます!
以上がGit Checkout を廃止する: 代わりに Git Switch と Git Restore を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。