文章目录
一、前言二、git push上传新的分支三、git fetch 拉取远程仓库四、git pull 拉取远程仓库本节内容速览
二:
git push
使用三:git fetch
使用、为什么存在git fetch
机制四:git pull
使用、git fetch
与git pull
区别
一、前言
参考安装Git 详细安装教程参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多参考视频『Git』知道这些就够了_哔哩哔哩_bilibili,这个精华多,推荐看这个参考视频7小时学会Git 基础全套完整教程(从入门到精通)_哔哩哔哩_bilibili,这个虽然长,但是他偏实践,对小白友好,特别有意思附一个Git动画学习网站Git教程 - 廖雪峰的官方网站 ()讲讲小张的感受:我没有接触过Git
,所以看了很多视频,对于入门使用确实只要知道git clone
,git add
,git commit
,git push
,git merge
,确实也就足够了。但是我很好奇背后的原理,为什么要用git add
到暂存区而不是直接git commit
?很多指令之间为什么要按一定的顺序执行?所以这个系列我以初学的时候,小白的角度从安装到工作原理(有的是我自己的见解,如果感觉不对,欢迎指正),再到实际应用!另外,推荐看一遍第三个参考视频,然后看一下第四个参考视频,对工作原理的讲解和实际应用确实不错!
二、git push上传新的分支
正常情况下直接git push
就可以提交到远程仓库。但是在本地新建了一个分支4.0
,在git push
的时候报错,如下
这个错误就是 表示本地分支与远程分支之间没有连接起来,所以在git push
的时候报错
解决方法 1
只需要在输入git push -u origin dev(分支名)
。这样就可以成功push
解决方法 2
按照git
的提示,执行以下命令:
git push --set-upstream origin dev
表示将远程dev
分支和本地dev
分支相关联。一般新建的分支在push
的时候都需要执行这个命令和远端相关联
三、git fetch 拉取远程仓库
新建两个文件夹,分别clone
我的一个仓库。模拟两台机器
新建一个分支,当前分支仅存在于本地。而远端没有这个分支,执行git push
总结:如果本地分支是新建的,也就是说没有设置上流分支,则需要使用
git push --set-upstream origin <name>
,先设置上流分支。之后的所有提交直接使用git push
即可
现在小王想要使用小张
这个分支。使用git fetch
查看新分支,仅是查看信息,并没有下载本地
利用git branch
查看当前本地的分支信息
通过checkout
切换到新分支,现在本地仓库的文件就切换成了新分支。注意必须先git fetch
,否则checkout
无效
这里新分支并不需要重新设置上流分支,直接
push
即可。因为从远程仓库切的分支,git知道它的来源Q:为什么需要fetch机制
A:每次checkout的时候,Git直接去远程仓库检测是否有该分支。理论上可以,但是实际工作中,使用git是在本地切来切去。只有在团队协作时才需要和远程仓库交互。所以每次checkout都检测远程仓库,浪费网络资源
四、git pull 拉取远程仓库
如果此时小张修改了分支内的内容,再次push到了远程仓库。小王如何将新的变更更新到本地?可以fetch+merge
,也可以pull
。下载代码并快速合并,如果有冲突,手动合并并提交
# 拉取并合并当前分支注意:只是当前分支!git pull
或者
# 先拉取指定分支,后合并git fetch origin master # 从远程主机的master分支拉取最新内容 git merge FETCH_HEAD # 将拉取下来的最新内容合并到当前所在的分支中
再或者
# 先拉取,后合并git fetch# 从远程主机拉取所有分支的最新内容 git merge <分支名> # 将拉取下来的最新内容合并到当前所在的分支中
另一种情况是如果小张push到远程仓库后,小王把小张的程序修改了,小王是对旧版本做了更改,也push远程仓库就会报错。正常情况下先git pull
到本地查看文件改动,如果有冲突,手动改动后再提交(先输入的命令后查看的文本,这里我上下截图顺序错了)
以下是后来对文章的改动,因为单独在git merge
发过解决冲突,所以没有截图。避免有小伙伴不会解决冲突,单独解释一下
<<<HEAD
合并前的内容
= = = = = = = =
合并后,远程的内容
'>>>>>>> commitID
打开文本将文本修改为自己想要的样子
自己想要的样子xxxxxxx
然后执行git add .
、git commit -m
、git push
总结
所以建议使用fetch+merge
,可以先git fetch
,查看远程是否有新的更新?如果没有更新,不返回仍何值
如果有更新再用git merge origin <branch-name>
将本地仓库与远程仓库合并
解决冲突后再进行git push
附三篇我认为不错的文章
详解git pull和git fetch的区别:_马恩光的博客-CSDN博客_git pull和fetch的区别
Git fetch & pull 详解_MuffinFish的博客-CSDN博客_git pull
使用git fetch和git rebase处理多人开发同一分支的问题_azureternite的专栏-CSDN博客
在本节
三、git fetch 拉取远程仓库部分下载云端分支需要通过
git checkout
下载仓库中的分支,但是当远程有多个分支需要全部下载下来呢?或者git clone
默认克隆的只是main
分支,需要一次下载所有的分支呢?
下节介绍
如何下载指定的云端分支如何下载所有的云端分支
专栏速览:
Git使用 从入门到入土 收藏吃灰系列(一) 专栏前言Git使用 从入门到入土 收藏吃灰系列(二) Git的安装与配置Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令Git使用 从入门到入土 收藏吃灰系列(四) Git工作原理Git使用 从入门到入土 收藏吃灰系列(五) Git本地仓库搭建Git使用 从入门到入土 收藏吃灰系列(六) 链接远程仓库Git使用 从入门到入土 收藏吃灰系列 (七) 同时配置Gitee、Github 公钥Git使用 从入门到入土 收藏吃灰系列 (八) 什么是分支 分支的作用Git使用 从入门到入土 收藏吃灰系列 (九) git reset 移除暂存区与版本回退Git使用 从入门到入土 收藏吃灰系列 (十) 详谈push、fetch、pullGit使用 从入门到入土 收藏吃灰系列 (十一) 下载所有远程仓库分支Git使用 从入门到入土 收藏吃灰系列 (十二) git merge 与 git rebaseGit使用 从入门到入土 收藏吃灰系列 (十三) git stash、git check-pick、git tag、git diffGit使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录Git使用 从入门到入土 收藏吃灰系列 (十五) 自定义Git命令Git使用 (十六) Github上的小按钮Git使用 (十七) 解决Git Bash中文乱码
如果觉得《Git使用 从入门到入土 收藏吃灰系列 (十) 详谈push fetch pull》对你有帮助,请点赞、收藏,并留下你的观点哦!