回答:
git clone
既存のリポジトリのローカルコピーを取得する方法です。リポジトリの複数の作業用コピーが必要な場合を除き、通常は特定のリポジトリに対して1回だけ使用されます。(または、ローカルのものを台無しにした後でクリーンなコピーを取得したい...)
git pull
(またはgit fetch
+ git merge
)は、リモートリポジトリからの新しいコミットでローカルコピーを更新する方法です。他のユーザーと共同作業している場合は、頻繁に実行するコマンドです。
最初の例が示すように、git clone
他のgitコマンドの組み合わせでエミュレートすることは可能ですgit pull
が、「基本的に同じこと」git clone
(またはその逆)を行っているのは実際にはそうではありません。
素人の言葉で言うと:
ミス・クローン:私はローカルに新しいコピーを手に入れました。
プル氏:私はすでにローカルに持っているので、更新するだけです。
ミス・クローン:私はあなたがすることをすることができます!あなたは私のサブセットです。
プル氏:同上!
ミス・クローン:いいえ、あなたは作成しません。これが私がすることです:
あなたは#3を行うだけで、それからマージする必要はありません(私のものは新鮮です)。
プル氏:スマーティーパンツ、大したことはありません。最初に「git init」を実行します。それから私たちは同じです。さらに、既存のリポジトリに追加の「マージ」機能があります!これにより、Gitで最もよく使用されるコマンドになります;)
Gitクリエーター:馬を引っ張るプル氏、-bareまたは--mirrorがcloneまたはinitで使用されている場合、マージは行われません。読み取り専用のままです。
うーん、プルしたとき、リモートブランチ "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
このgit fetch
コマンドはサーバー上にまだ存在しないすべての変更をフェッチしますが、作業ディレクトリをまったく変更しません。単にデータを取得して、自分でマージできるようにします。ただし、ほとんどの場合、git pull
本質的にgit fetch
すぐ後に続くというコマンドがありgit merge
ます。
続きを読む:https : //git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Pulling
クローン -:ローカルマシンにリモートリポジトリプロジェクトの完全に重複したコピーを作成します。
プル -:2人以上のユーザーが同じリポジトリを共有しているとします。(別の人の名前がSyamであるとします)(リポジトリとは、Githubでプロジェクトが存在する場所です)したがって、Syamがローカルの同じプロジェクトでいくつかの変更を行い、それをリモートリポジトリにプッシュすると、Syamが行った変更はすべて、あなたの地元では反映されません。したがって、ローカルでこれらの新しい変更を反映するには、git pullを使用する必要があります。全体的に、プロジェクトの更新にはgit pullを使用します。
したがって、基本的にはgit cloneを1回だけ使用しますが、git pullは何度も使用します。