git中pull和clone有什么区别?

cmc*_*loh 216 git clone pull

做(之后mkdir repocd repo)有什么区别:

git init
git remote add origin git://github.com/cmcculloh/repo.git
git fetch --all
git pull origin master
Run Code Online (Sandbox Code Playgroud)

git clone git://github.com/cmcculloh/repo.git
Run Code Online (Sandbox Code Playgroud)

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

ebn*_*ter 226

git clone是如何获得要处理的现有存储库的本地副本.它通常只对给定的存储库使用一次,除非你想要它的多个工作副本.(或者想弄乱你的当地人之后得到干净的副本......)

git pull(或git fetch+ git merge)是如何使用来自远程存储库的新提交更新本地副本.如果您正在与他人合作,那么您将经常运行该命令.

作为你的第一个例子,有可能效仿git clone其他Git命令的分类,但它不是真的,此案git pull正在做"基本上是一回事"为git clone(反之亦然).

  • @cmcculloh:没什么 - 你描述的序列有效地完成了"git clone"所做的事情.关键是"git pull"用于做除了你在那里做的各种事情 - 更不用说"git pull"实际上恰恰是"git fetch; git merge <current branch> <origin /当前分支>".IOW,如果你真的想,你可以没有克隆*和*拉.此外,您可以从您克隆的存储库之外的存储库中提取.我喜欢将"克隆"想象为"让我成为该回购的本地副本",并将"拉"视为"从某些指定的遥控器获取更新". (20认同)
  • 具体的是git clone正在做什么,这不是由涉及"git pull"的命令序列完成的? (4认同)

mea*_*gar 115

它们基本相同,除了clone将设置其他远程跟踪分支,而不仅仅是master.查看手册页:

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

  • git fetch --all设置了额外的远程跟踪分支,所以基本上它们是相同的. (9认同)
  • 您可以将“--single-branch”与“clone”一起使用。 (2认同)

Jyo*_*ash 107

用外行语言我们可以说:

  • 克隆:获取远程存储库的工作副本.
  • :我正在研究这个,请告诉我其他人可能更新的新变化.

  • 你如何处理你没有克隆的东西? (8认同)
  • 我_think_你的__Pull__定义也可以说是__Clone__ (3认同)
  • @F.Kam“克隆”仅在第一次使用以获取存储库的新副本 (2认同)

小智 33

git clone 表示您正在系统中制作存储库的副本.

git fork 表示您正在将存储库复制到您的Github帐户.

git pull 表示您正在获取上次修改的存储库.

git push 表示您在修改后返回存储库.

在外行的期限:

git clone正在下载并且git pull令人耳目一新


Blu*_*uds 19

克隆小姐:我得到了一份本地的新副本。

拉先生:我本地已经有了,我只是更新一下。


克隆小姐:我可以做你做的!你只是我的一个子集。

拉先生:同上!


克隆小姐:不,你不创造。这就是我所做的:

  1. 在本地计算机中创建空的裸存储库。
  2. 填充远程跟踪分支(下载到本地计算机的 repo 中的所有分支)
  3. 不带参数运行 git fetch

你只做#3,然后你合并,我不需要做(我的是新鲜的)。

Mr Pull:聪明的裤子,没什么大不了的,我会先做一个“git init”!那我们就一样了。


克隆小姐:不,亲爱的,你不需要一个“已签出的分支”git checkout吗…… ?谁来做?我!

拉先生:哦对了,这是需要的。我需要一个默认分支来执行操作。但是..但是我对现有的回购有额外的“合并”能力!这使我成为 Git 中最常用的命令;)


Git 创建者:拉住你的马,拉先生,如果 --bare 或 --mirror 与 clone 或 init 一起使用,你的合并将不会发生。它保持只读状态。对于你的克隆小姐,git checkout可以用 a 替换,git fetch <remote> <srcBranch>:<destBranch>除非你想使用-s <strategy>在 fetch 中缺少的with pull。


克隆小姐:不知何故,我觉得自己已经是赢家了,但让我也放弃这个:我的命令适用于存储库中的所有分支。你是那种心胸开阔的拉先生吗?

Pull 先生:在从 repo 中获取所有分支名称(只是“名称”)时,我的思路很宽泛。因为我不喜欢获取不必要的分支。但是合并只会发生在当前签出的分支上。排他性就是名字!在您的情况下,您也只结帐一个分行。

Git Creators:仅添加一项:如果需要,Miss Clone 可以仅限于一个分支 git clone --single-branch --branch <branch name> <url>

  • 被低估的答案。 (2认同)

Sum*_*ani 9

clone:将远程服务器存储库复制到本地计算机.

pull:获取其他已添加到本地计算机的新更改.

这是不同的.

克隆通常用于获取远程repo副本.

如果您在团队中工作,Pull用于查看其他队友添加的代码.


小智 5

git clone仅用于准确下载当前在远程服务器存储库上运行的内容,并将其保存在该项目所在的机器文件夹中。大多数情况下,它仅在我们第一次上传项目时使用。在那之后拉动是更好的选择。

git pull基本上是一个(克隆(下载)+合并)操作,主要用于团队合作。换句话说,当您想要该项目的最近更改时,您可以拉取。