web-dev-qa-db-ja.com

gitのプルとクローンの違いは何ですか?

実行の違いは何ですか(mkdir repocd repoの後):

git init
git remote add Origin git://github.com/cmcculloh/repo.git
git fetch --all
git pull Origin master

そして

git clone git://github.com/cmcculloh/repo.git

つまり、明らかに1つは短いですが、それ以外は基本的に同じことをしていますか?

198
cmcculloh

基本的には同じですが、クローンはマスターだけでなく追加のリモートトラッキングブランチをセットアップします。 manページ をご覧ください。

リポジトリを新しく作成されたディレクトリにクローンし、クローンリポジトリの各ブランチにリモートトラッキングブランチを作成し(git branch -rを使用して表示)、クローンリポジトリの現在アクティブなブランチから分岐された初期ブランチを作成およびチェックアウトします。

103
meagar

git cloneは、既存のリポジトリのローカルコピーを取得する方法です。複数の作業コピーを持ちたい場合を除き、通常は特定のリポジトリに対して1回だけ使用されます。 (または、ローカルのものを台無しにしてきれいなコピーを取得したい...)

git pull(またはgit fetch + git merge)は、pdateリモートリポジトリからの新しいコミットによるローカルコピーの方法です。他のユーザーと共同作業している場合、頻繁に実行するコマンドです。

最初の例が示すように、git cloneを他のgitコマンドの組み合わせでエミュレートすることは可能ですが、実際にはgit pullgit cloneと「基本的に同じこと」を実行しているわけではありません(またはその逆)。

214
ebneter

素人の言葉で言うことができます:

  • Clone:リモートリポジトリの作業コピーを取得します。
  • プル:私はこれに取り組んでいます。他の人によって更新されるかもしれない新しい変更を教えてください。
99
Jyoti Prakash

git cloneは、システムにリポジトリのコピーを作成していることを意味します。

git forkは、リポジトリをGithubアカウントにコピーすることを意味します。

git pullは、最後に変更されたリポジトリを取得していることを意味します。

git Pushは、変更後にリポジトリを返すことを意味します。

素人の言葉で:

git cloneはダウンロード中で、git pullは更新中です。

25
user7909000

clone:リモートサーバーリポジトリをローカルマシンにコピーします。

プル:ローカルマシンに追加された新しい変更を取得します。

これが違いです。

クローンは通常、リモートリポジトリコピーを取得するために使用されます。

プルは、チームで作業している場合、他のチームメイトに追加されたコードを表示するために使用されます。

8
Suman Astani

git cloneは、リモートサーバーリポジトリで現在動作しているものを正確にダウンロードし、そのプロジェクトが置かれているマシンのフォルダーに保存するために使用されます。ほとんどの場合、プロジェクトを初めてアップロードするときにのみ使用されます。そのプルの後、より良いオプションです。

git pullは基本的に(clone(download)+ merge)操作であり、主にチームワークとして作業しているときに使用されます。つまり、そのプロジェクトの最新の変更が必要な場合は、プルすることができます。

3
Raman_1059

うーん、私がクローンを作成するときのように、プルしたときにリモートブランチ「4.2」が表示されないのは何ですか?明らかに同一ではないものがあります。

tmp$  mkdir some_repo

tmp$  cd some_repo

some_repo$  git init
Initialized empty Git repository in /tmp/some_repo/.git/

some_repo$  git pull https://github.ourplace.net/babelfish/some_repo.git
  :
From https://github.ourplace.net/babelfish/some_repo
 * branch            HEAD       -> FETCH_HEAD

some_repo$  git branch
* master

tmp$  rm -rf some_repo

tmp$  git clone https://github.ourplace.net/babelfish/some_repo.git
Cloning into 'some_repo'...
  :
Checking connectivity... done.

tmp$  cd some_repo

some_repo$  git branch
* 4.2
2
Scott

git fetchコマンドは、まだ持っていないサーバー上のすべての変更を取得しますが、作業ディレクトリをまったく変更しません。単にデータを取得し、自分でマージできるようにします。ただし、ほとんどの場合、git pullというコマンドがあり、これは基本的にgit fetchの直後にgit mergeが続きます。

詳細: https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Pulling

1
simopr

git clone URL --->完全なプロジェクトまたはリポジトリが個別のディレクトリとしてダウンロードされます。変更だけでなくgit pull URL ---> fetch + merge->プロジェクト全体ではなく、行われた変更のみを取得します

0
Md Abrar