Gitコマンドがgit checkout
という名前のブランチを切り替えるのはなぜですか?
それは本当に意味がありますか?
代わりにgit switch
という名前を付けます。さらに、git checkout
には他の意味があります。ファイルを元に戻す(svn revert
など)
他のほとんどの回答は、git checkout
が何をするのか、そしてなぜ「チェックアウト」がそれを説明するのに合理的な方法であるのかを説明しているようです。しかし、私はgitが大好きですが、これは、人々がシステムを理解できるように支援しようとしているときに発生する2つの深刻なフラストレーションのポイントに触れています。
git checkout
は2つの非常に異なることを行います。それらが別々のコマンドである場合、初心者にとって役立ちます。
皮肉屋は、CVSとSubversionから来る人々を混乱させるためにgitの用語が意図的に選択されたことを示唆しているかもしれません!あなたが言及したもの(checkout
)は良い例です。もう1つはcommit
です。これは、gitでは完全にローカルであり、CVS/SVNのサーバーに完全に依存しています。「レコード」というdarcsの用語では、gitを初めて使用する人にとっては学習が少なくて済みます。私が好きな他の例は、gitに表示される「更新が必要です」というメッセージです。これは実際には 「コミットする必要があります」 :)を意味します。
もちろん、 easy git 、 iolaus など、常に別のフロントエンドをgitに使用することもできますが、ほとんどの人は最終的に標準コマンドを学習する必要があります。 、だからあなたはそれらのいくつかがかなり驚くべき名前が付けられていることに慣れなければなりません。
Gitのこれらのさまざまなコマンドの名前には歴史的な理由があると確信していますが、別の単語が選択されていれば役に立ちました...
更新:VonC コメント内のリンク git checkout
を作成するためのきちんとしたエイリアスを持つ回答より安全 その2つの使用法のいずれかで;)
ブランチをチェックアウトするときに、(ライブラリから本を「チェックアウト」するかのように)そのブランチ内の最新のリビジョン状態にあるすべての適切なファイルを作業コピーとして提供するようにリポジトリに要求するため、これは適切な名前です。
ここでは、git checkout
が「他の意味」を持っているという問題は実際にはありません。このコマンドは、リビジョン状態Xで、個々のファイルまたはファイルのセット(「ブランチ」と読みます)を提供します。 「元に戻す」ことを検討するかどうかにかかわらず、git checkout
は柔軟性があり、少し一般的であるという大きなポイントが欠けています。どちらの場合も、チェックアウトリポジトリからある程度の状態を取得し、それを作業コピーとして設定して、編集の準備をします。
このコマンドは2つのアクションを実行するために使用できるため、「checkout」キーワードを使用することは「理にかなっています」。
2つのアクションは次のとおりです。
コミットIDとブランチ名を区別する場合は、「-」引数を使用することもできます。
checkout
は、作業ツリー内のファイルを更新することを指します。元に戻すということは、作業ツリー内のファイルを以前のコミットに更新することも意味します。したがって、私の意味では、git checkout
を使用して更新または元に戻すコマンドを1つ持つ方が現実的です。
代わりにgitswitchという名前を付けます。
Git 2.23(2019年8月)では、紛らわしいgit checkout
コマンドを使用する必要がなくなりました。
8年前に提案したように、代わりにgit switch
を使用できます。
(ブランチを切り替えずに)作業ツリーを更新する必要がある場合は、 新しいコマンドgit restore
が担当しますその。
詳細については、 " Git 2.23 " fromTaylor Bla。