git cloneとcheckoutの違いは何ですか?


回答:


337

チェックアウトのmanページ:http : //git-scm.com/docs/git-checkout

クローンのmanページ:http : //git-scm.com/docs/git-clone

要約すると、クローンは持っていないリポジトリを取得するためのもので、チェックアウトはすでに持っているリポジトリ内のブランチを切り替えるためのものです。

注:SVN / CVSのバックグラウンドがあり、Gitを初めて使用する場合git clone、SVN / CVSでのと同等のものはcheckoutです。異なる用語の同じ表現はしばしば混乱を招きます。


41
checkout作業コピーのファイルを別のリビジョンのファイルのバージョンで上書きするなど、他の目的にも使用できます。
スビック

8
また、「プル」と「チェックアウト」はいつ使用しますか?
ココドコ

27
プルはフェッチとマージであり、チェックアウトはローカルオペレーションであり、すでにフェッチされたデータのみを操作します。したがって、svn checkoutとはまったく異なります。
8月のリレアス

13
SVNの世界から来て、私も混乱しました。うわー、なんてめちゃくちゃ。理想的な世界では、すべてのソース管理システムメーカーに同じ用語を使用するように強制します。
ゾルタンTamási

5
フォークはgithub用語であり、git自体とは関係ありません。
August Lilleaas 2015年

123

git cloneは、リモートgitサーバーからリポジトリを取得するためのものです。

git checkoutは、リポジトリの目的のステータス(ブランチや特定のファイルなど)をチェックアウトすることです。

たとえば、現在マスターブランチにいて、開発ブランチに切り替えたいとします。

git checkout develop_branch

たとえば、特定のファイルの特定のステータスにチェックアウトしたい場合

git checkout commit_point_A -- <filename>

これは、Gitを学ぶための優れたリファレンスです。これにより、はるかに簡単に理解できます。


20
「リモートgitサーバーから」-サーバーがリモートである必要はありません。git cloneローカルリポジトリでも動作します。
2012年

1
gitへの視覚的な参照へのリンクをありがとう!
David Pointer

@Kit Ho:リンクは参照としては問題ありませんが、上記の人のようにgitに関する基本的な質問を持つ人にとってはあまり役に立ちません。記事自体が言うように、「gitがどのように機能するかについて少し知ったら、このサイトは理解を深めるかもしれません」
SN

循環的な定義はあまり役に立ちません。クローンを説明するために使用される「フェッチ」という単語は有用であり、意味を追加しますが、「チェックアウトはチェックアウトです...」というフレーズは意味を追加せず、2つの操作の違いを区別するのにも役立ちません。
Cパーキンス

11

注目すべきことの1つは、git内に「コピーアウト」がないことです。これは、ローカルリポジトリに完全なコピーが既にあるためです。ローカルリポジトリcloneは、選択した上流リポジトリの1つです。だから、効果的に個人の持っているcheckoutすべてのものを参照レポでこれらのファイルにいくつかの「ロック」をかけることなく、。

Gitは、ファイル/ディレクトリツリー/ commit / repoのコピーが、信頼の階層内で「マスター」として宣言できる人が使用するものとまったく同じであることを確認するメカニズムとしてSHA1ハッシュ値を提供します。これにより、ほとんどのSCMシステムが窒息する原因となるすべての「ロック」が回避されます(プライベートコピー、大きなマージ、およびソースコードの実際の制御や管理ができないという通常の問題があります;-)!


4
質問にはロックについては触れられておらず、最近のデフォルトでは、この概念に精通していないと想定されているため、古いVCSとの違いは、明確に尋ねられた場合にのみ説明する必要があります。
wRAR 2011

6

単にgit checkoutには2つの用途があります

  1. のような既存のローカルブランチ間の切り替え git checkout <existing_local_branch_name>
  2. フラグ-bを使用して、現在のブランチから新しいブランチを作成します。あなたがマスターブランチにいる場合、マスターgit checkout -b <new_feature_branch_name>のコンテンツで新しいブランチを作成し、新しく作成されたブランチに切り替えるとします

あなたは公式サイトでより多くのオプションを見つけることができます


いいね。この-bオプションは素晴らしいもので、新しいローカルブランチを作成し、単一のコマンドで同時にチェックアウトします。楽しかった!
RBT

2

checkout 多くの場合に使用できます:

1番目のケース:ローカルリポジトリのブランチを切り替えます。例: git checkout exists_branch_to_switch

新しいブランチを作成して、この場合は次のように切り替えることもできます -b

git checkout -b new_branch_to_switch

2番目のケース:x revからファイルを復元します

git checkout rev file_to_restore ...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.