执行(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
我的意思是,显然一个是短的,但除此之外他们基本上做同样的事情?
答案 0 :(得分:209)
git clone
是如何获取要处理的现有存储库的本地副本的。它通常只对给定的存储库使用一次,除非你想要它的多个工作副本。 (或者想弄乱你的当地人之后得到一份干净的副本......)
git pull
(或git fetch
+ git merge
)是您使用来自远程存储库的新提交更新本地副本的方式。如果您正在与他人合作,那么这将是您经常运行的命令。
正如您的第一个示例所示,可以使用各种其他git命令模拟git clone
,但事实并非git pull
正在做的事情与{{基本相同的事情“ 1}}(反之亦然)。
答案 1 :(得分:102)
它们基本相同,除了克隆将设置其他远程跟踪分支,而不仅仅是主分支。查看man page:
将存储库克隆到新创建的目录中,为克隆存储库中的每个分支创建远程跟踪分支(使用git branch -r可见),并创建并检出从克隆存储库当前活动分叉的初始分支分支。
答案 2 :(得分:97)
用外行语言我们可以说:
答案 3 :(得分:24)
git clone
表示您正在制作系统中存储库的副本。
git fork
表示您正在将存储库复制到您的Github帐户。
git pull
表示您正在获取最后修改的存储库。
git push
表示您在修改后返回存储库。
外行人的任期:
git clone
正在下载,git pull
正在刷新。
答案 4 :(得分:8)
克隆:将远程服务器存储库复制到本地计算机。
拉:获取其他已添加到本地计算机的新更改。
这是不同的。
克隆通常用于获取远程回购副本。
Pull用于查看其他队友添加的代码,如果您是团队合作。
答案 5 :(得分:8)
克隆小姐:我将新副本复制到本地。
Pull先生:我已经在本地拥有它,我只是对其进行更新。
克隆小姐:我可以做你做的事!你只是我的一部分。
拉尔先生:同上!
克隆小姐:不,您没有创造。这就是我要做的:
您只执行#3,然后合并,而我不需要这样做(我是新鲜的)。
拉先生:聪明的裤子,没什么大不了的,我先做一个“ git init”!那我们就一样了。
克隆小姐:亲爱的,您不需要结帐分支吗?谁来做?我!
拉尔先生:对,这是需要的。我需要一个默认分支来执行操作。但是..但是 我在现有存储库上具有额外的“合并”功能!这使我成为Git中最常用的命令;)
Git的创建者:请拉马先生,如果--bare或--mirror与clone或init一起使用,则不会发生合并。它仍然是只读的。对于您来说,克隆小姐,git checkout
可以用git fetch <remote> <srcBranch>:<destBranch>
代替,除非您想使用-s <strategy>
来进行提取,而pull缺少。
克隆小姐:不知何故我已经感觉像是一个胜利者,但也让我放弃:我的命令适用于存储库中的所有分支。你是个头脑宽广的拉尔先生吗?
先生。拉:在从仓库中获取所有分支时,我头脑很宽广。但是合并只会在当前已签出的分支上发生。排他性是一流的!
答案 6 :(得分:3)
git clone 仅用于完全下载远程服务器存储库上当前正在运行的内容,并将其保存在放置该项目的计算机文件夹中。 通常,仅在我们第一次上载项目时才使用它。拉那之后是更好的选择。
git pull 本质上是(克隆(下载)+合并)操作,通常在您进行团队合作时使用。换句话说,当您想要该项目中的最新更改时,可以拉动。
答案 7 :(得分:2)
嗯,当我拉动时看到远程分支“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
答案 8 :(得分:1)
虽然git fetch
命令将获取您尚未拥有的服务器上的所有更改,但它根本不会修改您的工作目录。它只是为您获取数据并让您自己合并。但是,有一个名为git pull
的命令,在大多数情况下基本上是git fetch
,后面紧跟git merge
。
了解详情:https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Pulling
答案 9 :(得分:1)
克隆-:它将在本地计算机上创建远程存储库项目的完全相同的副本。
拉动-:假设两个或两个以上的人共享同一个存储库。 (假设另一个人的名字是Syam) (存储库是您的项目在Github中存在的地方),因此,如果Syam在其本地的同一项目中进行了一些更改并将其推送到远程存储库,则Syam所做的任何更改都不会反映在您的本地中。因此,要在本地反映这些新变化,您必须使用git pull。总的来说,我们使用git pull来更新项目。
所以基本上我们只使用git clone一次,而我们多次使用git pull。
答案 10 :(得分:0)
git clone URL --->完整的项目或资源库将作为单独的目录下载。不仅是变化 git pull URL --->获取+合并->仅获取已完成的更改,而不是整个项目