ホームページ  >  記事  >  ウェブフロントエンド  >  Git Checkout を廃止する: 代わりに Git Switch と Git Restore を使用する

Git Checkout を廃止する: 代わりに Git Switch と Git Restore を使用する

Barbara Streisand
Barbara Streisandオリジナル
2024-10-14 13:28:05898ブラウズ

日常の仕事で 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] -- で、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 には対応するオプションがないことに注意してください。

グラフで表示:

Ditch Git Checkout: Use Git Switch and Git Restore Instead

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

グラフで表示:

Ditch Git Checkout: Use Git Switch and Git Restore Instead

上記はデフォルトです。別のコミットから復元したい場合は、--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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。