Answers:
git clone
是如何获取现有存储库的本地副本。对于给定的存储库,它通常仅使用一次,除非您希望拥有多个工作副本。(或者想要弄乱本地副本后得到干净的副本...)
git pull
(或git fetch
+ git merge
)是如何使用远程存储库中的新提交更新本地副本的方法。如果您正在与其他人协作,则该命令将使您经常运行。
如您的第一个示例所示,可以git clone
使用各种其他git命令进行仿真,但实际上git pull
做与“基本上相同”的情况git clone
(反之亦然)。
用外行语言我们可以说:
clone:将远程服务器存储库复制到本地计算机。
pull:获取其他已添加到本地计算机的新更改。
这是区别。
克隆通常用于获取远程回购副本。
如果您在团队中工作,Pull用于查看其他队友添加的代码。
克隆小姐:我得到了一份新鲜的副本到本地。
Pull先生:我已经在本地拥有它,我只是对其进行更新。
克隆小姐:我可以做你想做的!你只是我的一部分。
拉先生:同上!
克隆小姐:不,您不创建。这是我的工作:
您只执行#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/zh/v2/Git-Branching-Remote-Branches#Pulling
克隆 -:它将在本地计算机上创建与远程存储库项目完全相同的副本。
拉 -:假设两个或两个以上的人共享同一个存储库。(假设另一个人的名字是Syam)(一个存储库是您的项目在Github中的位置)因此,如果Syam在其本地的同一项目中进行了一些更改并将其推送到远程存储库,那么无论Syam所做的更改如何,这些更改都会不在您当地反映。因此,要在本地反映这些新变化,您必须使用git pull。总的来说,我们使用git pull来更新项目。
因此,基本上我们只使用git clone一次,而我们多次使用git pull。