声明:码字不易,转载请注明出处,欢迎文章下方讨论交流。
最近在一个学习小组里学习AI的课程,咱们全部的学习资料和homework都放在gitlab上。今天一个小队友从gitlab上load仓库的时候问起了这个问题,正好在此总结记录一下,仅供参考。git
git clone顾名思义就是将其余仓库克隆到本地,包括被clone仓库的版本变化
。举个例子,你当前目录比方说是在e:/course/中,此时若想下载远程仓库,本地无需git init
,直接git clone url(url是你远程仓库的地址,直接复制就能够了)。执行git clone等待clone结束,e:/course/目录下自动会有一个.git的隐藏文件夹(若是看不见,请尝试设置隐藏文件夹可见),由于是clone来的,因此.git文件夹里存放着与远程仓库如出一辙的版本库记录。clone操做是一个从无到有的克隆操做,再次强调不须要git init
初始化。github
$ git clone <版本库的url>
例如克隆TensorFlow:安全
$ git clone https://github.com/tensorflow/tensorflow.git
或者使用SSH协议:服务器
$ git clone git@github.com:tensorflow/tensorflow.git
这样就会在本地生成一个目录,该目录与远程仓库同名。
However,若是本地目录不想与远程仓库同名怎么办??也有办法,将目录名做为git clone
命令的第二个参数:gitlab
$ git clone <版本库的网址> <本地目录名>
git pull是拉取远程分支更新到本地仓库的操做。好比远程仓库里的学习资料有了新内容,须要把新内容下载下来的时候,就可使用git pull
命令。事实上,git pull是至关于从远程仓库获取最新版本,而后再与本地分支merge(合并)。
即:git pull = git fetch + git merge
学习
注:git fetch不会进行合并,执行后须要手动执行git merge合并,而git pull拉取远程分以后直接与本地分支进行合并。更准确地说,git pull是使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。
$ git pull <远程主机名> <远程分支名>:<本地分支名>
举例:将远程主机origin的master分支拉取过来,与本地的branchtest分支合并。fetch
$ git pull origin master:branchtest
若是将冒号和后面的branchtest去掉,则表示将远程origin仓库的master分支拉取下来与本地当前分支合并。
以上的git pull操做若是用git fetch来表示:url
$ git fetch origin master:brantest $ git merge brantest
相比起来,git fetch
更安全也更符合实际要求,由于能够在merge前,咱们能够查看更新状况,根据实际状况再决定是否合并。code
理解 fetch 的关键, 是理解 FETCH_HEAD,FETCH_HEAD指的是: 某个branch在服务器上的最新状态’。这个列表保存在 .Git/FETCH_HEAD 文件中, 其中每一行对应于远程服务器的一个分支。
当前分支指向的FETCH_HEAD, 就是这个文件第一行对应的那个分支.
通常来讲, 存在两种状况:it
# 方法一 $ git fetch origin master #从远程的origin仓库的master分支下载代码到本地的origin maste $ git log -p master.. origin/master #比较本地的仓库和远程参考的区别 $ git merge origin/master #把远程下载下来的代码合并到本地仓库,远程的和本地的合并
# 方法二 $ git fetch origin master:temp #从远程的origin仓库的master分支下载到本地并新建一个分支temp $ git diff temp #比较master分支和temp分支的不一样 $ git merge temp #合并temp分支到master分支 $ git branch -d temp #删除temp
码字不易,如对您有帮助,欢迎点赞收藏打赏^_^