web-dev-qa-db-ja.com

「gitcheckout」という名前のブランチを切り替えるgitコマンドはなぜですか?

Gitコマンドがgit checkoutという名前のブランチを切り替えるのはなぜですか?
それは本当に意味がありますか?

代わりにgit switchという名前を付けます。さらに、git checkoutには他の意味があります。ファイルを元に戻す(svn revertなど)

18
Michael

他のほとんどの回答は、git checkoutが何をするのか、そしてなぜ「チェックアウト」がそれを説明するのに合理的な方法であるのかを説明しているようです。しかし、私はgitが大好きですが、これは、人々がシステムを理解できるように支援しようとしているときに発生する2つの深刻なフラストレーションのポイントに触れています。

  1. git checkoutは2つの非常に異なることを行います。それらが別々のコマンドである場合、初心者にとって役立ちます。

  2. 皮肉屋は、CVSとSubversionから来る人々を混乱させるためにgitの用語が意図的に選択されたことを示唆しているかもしれません!あなたが言及したもの(checkout)は良い例です。もう1つはcommitです。これは、gitでは完全にローカルであり、CVS/SVNのサーバーに完全に依存しています。「レコード」というdarcsの用語では、gitを初めて使用する人にとっては学習が少なくて済みます。私が好きな他の例は、gitに表示される「更新が必要です」というメッセージです。これは実際には 「コミットする必要があります」 :)を意味します。

もちろん、 easy gitiolaus など、常に別のフロントエンドをgitに使用することもできますが、ほとんどの人は最終的に標準コマンドを学習する必要があります。 、だからあなたはそれらのいくつかがかなり驚くべき名前が付けられていることに慣れなければなりません。

Gitのこれらのさまざまなコマンドの名前には歴史的な理由があると確信していますが、別の単語が選択されていれば役に立ちました...


更新:VonC コメント内のリンク git checkoutを作成するためのきちんとしたエイリアスを持つ回答より安全 その2つの使用法のいずれかで;)

13
Mark Longair

ブランチをチェックアウトするときに、(ライブラリから本を「チェックアウト」するかのように)そのブランチ内の最新のリビジョン状態にあるすべての適切なファイルを作業コピーとして提供するようにリポジトリに要求するため、これは適切な名前です。

ここでは、git checkoutが「他の意味」を持っているという問題は実際にはありません。このコマンドは、リビジョン状態Xで、個々のファイルまたはファイルのセット(「ブランチ」と読みます)を提供します。 「元に戻す」ことを検討するかどうかにかかわらず、git checkoutは柔軟性があり、少し一般的であるという大きなポイントが欠けています。どちらの場合も、チェックアウトリポジトリからある程度の状態を取得し、それを作業コピーとして設定して、編集の準備をします。

6
David

このコマンドは2つのアクションを実行するために使用できるため、「checkout」キーワードを使用することは「理にかなっています」。

2つのアクションは次のとおりです。

  • ファイルの変更を以前のコミットIDにリセットする
  • ブランチへの切り替え

コミットIDとブランチ名を区別する場合は、「-」引数を使用することもできます。

1
Artusamak

checkoutは、作業ツリー内のファイルを更新することを指します。元に戻すということは、作業ツリー内のファイルを以前のコミットに更新することも意味します。したがって、私の意味では、git checkoutを使用して更新または元に戻すコマンドを1つ持つ方が現実的です。

1
mmrs151

代わりにgitswitchという名前を付けます。

Git 2.23(2019年8月)では、紛らわしいgit checkoutコマンドを使用する必要がなくなりました。

8年前に提案したように、代わりにgit switchを使用できます。

(ブランチを切り替えずに)作業ツリーを更新する必要がある場合は、 新しいコマンドgit restore が担当しますその。

詳細については、 " Git 2.23 " fromTaylor Bla

1
VonC