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 pull
和git 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