git中的pull和clone有什么区别?

做什么有什么区别:

mkdir repo cd 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 

我的意思是,显然有一个更短,但除此之外,他们基本上是做同样的事情?

他们基本上是一样的,除了克隆将设置额外的远程追踪分支,而不仅仅是主人。 查看手册页 :

将存储库克隆到新创build的目录中,为克隆的存储库中的每个分支创build远程跟踪分支(使用git branch -r可见),并创build并检出从克隆存储库当前活动分支派生的初始分支。

git clone是如何得到一个现有的存储库的本地副本的工作。 它通常只用于一个给定的仓库,除非你想有多个工作副本。 (或者在搞乱你的本地文件之后想得到一个干净的副本…)

git pull (或git fetch + git merge )是如何使用远程存储库中的新提交更新本地副本。 如果你与他人合作,这是一个你会频繁运行的命令。

正如你的第一个例子所示,可以用各种其他的git命令来模拟git clone ,但并不是git pullgit clone (或者相反)做“基本上一样的事情”。

在外行的语言,我们可以说:

  • 克隆 :获取远程存储库的工作副本。
  • :我正在为此工作,请让我接受其他人可能更新的新变化。

嗯,有什么缺less看到远程分支“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 

VS

 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

Interesting Posts