gitclone、gitpull和gitfetch的⽤法及区别
声明:码字不易,转载请注明出处,欢迎⽂章下⽅讨论交流。
最近在⼀个学习⼩组⾥学习AI的课程,我们所有的学习资料和homework都放在gitlab上。今天⼀个⼩队友从gitlab上load仓库的时候问起了这个问题,正好在此总结记录⼀下,仅供参考。
1.git clone
git clone顾名思义就是将其他仓库克隆到本地,包括被clone仓库的版本变化。举个例⼦,你当前⽬录⽐⽅说是在e:/course/中,此时若想下载远程仓库,本地⽆需git init,直接git clone url(url是你远程仓库的地址,直接复制就可以了)。执⾏git clone等待clone结束,e:/course/⽬录下⾃动会有⼀个.git的隐藏⽂件夹(如果看不见,请尝试设置隐藏⽂件夹可见),因为是clone来的,所以.git⽂件夹⾥存放着与远程仓库⼀模⼀样的版本库记录。clone操作是⼀个从⽆到有的克隆操作,再次强调不需要git init初始化。
git clone的⽤法:
$ git clone <;版本库的url>
例如克隆TensorFlow:
$ git clone github/tensorflow/tensorflow.git
或者使⽤SSH协议:
$ git clone git@github:tensorflow/tensorflow.git
这样就会在本地⽣成⼀个⽬录,该⽬录与远程仓库同名。
However,如果本地⽬录不想与远程仓库同名怎么办??也有办法,将⽬录名作为git clone命令的第⼆个参数:
$ git clone <;版本库的⽹址> <;本地⽬录名>
2.git pull
git pull是拉取远程分⽀更新到本地仓库的操作。⽐如远程仓库⾥的学习资料有了新内容,需要把新内容下载下来的时候,就可以使⽤git
pull命令。事实上,git pull是相当于从远程仓库获取最新版本,然后再与本地分⽀merge(合并)。
即:git pull = git fetch + git merge
fetch最佳用法注:git fetch不会进⾏合并,执⾏后需要⼿动执⾏git merge合并,⽽git pull拉取远程分之后直接与本地分⽀进⾏合并。更准确地说,git pull是使⽤给定的参数运⾏git fetch,并调⽤git merge将检索到的分⽀头合并到当前分⽀中。
git pull的⽤法:
$ git pull <;远程主机名> <;远程分⽀名>:<;本地分⽀名>
举例:将远程主机origin的master分⽀拉取过来,与本地的branchtest分⽀合并。
$ git pull origin master:branchtest
如果将冒号和后⾯的branchtest去掉,则表⽰将远程origin仓库的master分⽀拉取下来与本地当前分⽀合并。
以上的git pull操作如果⽤git fetch来表⽰:
$ git fetch origin master:brantest
$ git merge brantest
相⽐起来,git fetch更安全也更符合实际要求,因为可以在merge前,我们可以查看更新情况,根据实际情况再决定是否合并。
3.git fetch 更新远程代码到本地仓库
理解 fetch 的关键, 是理解 FETCH_HEAD,FETCH_HEAD指的是: 某个branch在服务器上的最新状态’。这个列表保存在
.Git/FETCH_HEAD ⽂件中, 其中每⼀⾏对应于远程服务器的⼀个分⽀。
当前分⽀指向的FETCH_HEAD, 就是这个⽂件第⼀⾏对应的那个分⽀.
⼀般来说, 存在两种情况:
如果没有显式的指定远程分⽀, 则远程分⽀的master将作为默认的FETCH_HEAD
如果指定了远程分⽀, 就将这个远程分⽀作为FETCH_HEAD
git fetch更新本地仓库的两种⽤法:
# ⽅法⼀
$ 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
码字不易,如对您有帮助,欢迎点赞收藏打赏^_^
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论