Git使用 从入门到入土 收藏吃灰系列 (十) 详谈push、fetch、pull
文章目录
- 一、前言
- 二、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教程 - 廖雪峰的官方网站 (liaoxuefeng.com)
讲讲小张的感受:我没有接触过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、pull
- Git使用 从入门到入土 收藏吃灰系列 (十一) 下载所有远程仓库分支
- Git使用 从入门到入土 收藏吃灰系列 (十二) git merge 与 git rebase
- Git使用 从入门到入土 收藏吃灰系列 (十三) git stash、git check-pick、git tag、git diff
- Git使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录
- Git使用 从入门到入土 收藏吃灰系列 (十五) 自定义Git命令
- Git使用 (十六) Github上的小按钮
- Git使用 (十七) 解决Git Bash中文乱码
Git使用 从入门到入土 收藏吃灰系列 (十) 详谈push、fetch、pull相关推荐
- Git使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录
文章目录 一.前言 二.清除git仓库的所有提交记录 本节速览 清除git仓库的所有提交记录 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 ...
- Git使用 从入门到入土 收藏吃灰系列 (九) git reset 移除暂存区与版本回退
文章目录 一.前言 二.Git远程命令实践 2.1git reset 移除暂存区 2.2 git log+git reflog+git reset 版本回退 一.前言 参考安装Git 详细安装教程 参 ...
- Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令
文章目录 一.前言 二.常用的命令 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Git』知道这些就够了_哔哩哔哩_bilibi ...
- Git使用 从入门到入土 收藏吃灰系列(四) Git工作原理
文章目录 一.前言 一.Git基本理论(核心) 1.1工作区 1.2工作流程 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Gi ...
- Git使用 从入门到入土 收藏吃灰系列(六) 链接远程仓库
文章目录 一.前言 二.使用Gitee链接远程仓库(免密登录) 2.1链接仓库 2.2使用指令上传远程仓库 三.利用GitHub连接远程仓库(免密登录) 一.前言 参考安装Git 详细安装教程 参考视 ...
- Git使用 从入门到入土 收藏吃灰系列 (八) 什么是分支 分支的作用
文章目录 一.前言 二.Git分支 2.1什么是分支? 2.2 分支有什么用? 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『G ...
- Git使用 从入门到入土 收藏吃灰系列 (十三) git stash、git check-pick、git tag、git diff
文章目录 一.前言 二.git stash 存储到堆栈 三.Git tag 标签 四.git cherry-pick 挑选合并 五.git diff 本节速览 git stash 堆栈 git tag ...
- 一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)
1.info命令作用 在redis客户端执行INFO 命令以便于计算机解析和人工阅读的简单格式返回有关redis服务端的所有信息和统计数据. 可选参数可用于选择特定的信息部分: Server 服务器基 ...
- 最新版Zookeeper常用命令总结(收藏吃灰系列)
1.服务端常用命令 在完成zookeeper的伪集群部署之后(部署教程参考linux上部署最新版本zookeeper伪分布式集群),可在bin目录下执行这些命令 启动ZK服务: bin/zkServe ...
最新文章
- Rust 所有权介绍
- ORA-01722: invalid number
- 点赞功能,用 MySQL?还是 Redis!
- 两种方式调试JNI中DLL(动态链接库)
- linux sed 找出前后三行,Linux Sed 使用示例
- pfx证书密码怎么查询_网站是HTTP?10分钟变成HTTPS!域名免费添加配置SSL证书,变成https//环境...
- MQ java.lang.OutOfMemoryError: unable to create new native thread
- python捕获信号退出_Python捕获信号退出Python中的捕获Ctrl+C/SIGINT,优雅地退出多个进程,python,在,CtrlCSIGINT,并...
- 安装FFmpeg后,发现没有生成ffplay的解决办法
- 项目服务器admin,django-admin创建项目与manage服务器的运行
- 【Java】JDK8新特性之函数式接口
- 小希的迷宫(请永远相信c语言的强大)
- tomcat启动很慢的解决方式
- Direct3D光与材质的颜色值
- 计算机图形学全代码,计算机图形学作业参考代码
- 刀片系统服务器优点,刀片服务器是什么?介绍ibm刀片服务器优点
- 数字华容道的数学原理
- matlab如何编newton-raphson,Matlab中的Newton-Raphson方法
- plsql能连mysql吗_明星就连拍结婚证件照,也能玩儿出花吗?
- gSkeletonClu: Revealing Density-Based Clustering Structure from the Core-Connected Tree of a Network
热门文章
- 考试成绩分析系统php,ASP考试成绩分析系统的设计与实现(源代码+论文)
- WORKNC 2022.1.2228_2022.10.30(免安装)
- 你见过什么天方夜谭的盈利项目吗?
- SDCC 2013:阿里周宝方谈“去IOE”战略及实施
- OmniGraffle 7 注册码
- 【安卓学习之微信抢红包】 微信抢红包 5 - 工具Android Monitor
- 好久不更了,写个中医的思考
- 【动态 | 麦肯锡报告:区块链距离商业化应用还有“三到五年”】
- TextMate 编辑 HTML 使用的快捷键记录
- python执行脚本失败恢复环境_Textmate 执行python脚本的错误:env: python3: No such file or directory...