文章目录

  • 一、前言
  • 二、git push上传新的分支
  • 三、git fetch 拉取远程仓库
  • 四、git pull 拉取远程仓库

本节内容速览

  • 二:git push使用
  • 三:git fetch使用、为什么存在git fetch机制
  • 四:git pull使用、git fetchgit 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 -mgit 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分支,需要一次下载所有的分支呢?

下节介绍

  • 如何下载指定的云端分支
  • 如何下载所有的云端分支

专栏速览:

  1. Git使用 从入门到入土 收藏吃灰系列(一) 专栏前言
  2. Git使用 从入门到入土 收藏吃灰系列(二) Git的安装与配置
  3. Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令
  4. Git使用 从入门到入土 收藏吃灰系列(四) Git工作原理
  5. Git使用 从入门到入土 收藏吃灰系列(五) Git本地仓库搭建
  6. Git使用 从入门到入土 收藏吃灰系列(六) 链接远程仓库
  7. Git使用 从入门到入土 收藏吃灰系列 (七) 同时配置Gitee、Github 公钥
  8. Git使用 从入门到入土 收藏吃灰系列 (八) 什么是分支 分支的作用
  9. Git使用 从入门到入土 收藏吃灰系列 (九) git reset 移除暂存区与版本回退
  10. Git使用 从入门到入土 收藏吃灰系列 (十) 详谈push、fetch、pull
  11. Git使用 从入门到入土 收藏吃灰系列 (十一) 下载所有远程仓库分支
  12. Git使用 从入门到入土 收藏吃灰系列 (十二) git merge 与 git rebase
  13. Git使用 从入门到入土 收藏吃灰系列 (十三) git stash、git check-pick、git tag、git diff
  14. Git使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录
  15. Git使用 从入门到入土 收藏吃灰系列 (十五) 自定义Git命令
  16. Git使用 (十六) Github上的小按钮
  17. Git使用 (十七) 解决Git Bash中文乱码

Git使用 从入门到入土 收藏吃灰系列 (十) 详谈push、fetch、pull相关推荐

  1. Git使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录

    文章目录 一.前言 二.清除git仓库的所有提交记录 本节速览 清除git仓库的所有提交记录 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 ...

  2. Git使用 从入门到入土 收藏吃灰系列 (九) git reset 移除暂存区与版本回退

    文章目录 一.前言 二.Git远程命令实践 2.1git reset 移除暂存区 2.2 git log+git reflog+git reset 版本回退 一.前言 参考安装Git 详细安装教程 参 ...

  3. Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令

    文章目录 一.前言 二.常用的命令 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Git』知道这些就够了_哔哩哔哩_bilibi ...

  4. Git使用 从入门到入土 收藏吃灰系列(四) Git工作原理

    文章目录 一.前言 一.Git基本理论(核心) 1.1工作区 1.2工作流程 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Gi ...

  5. Git使用 从入门到入土 收藏吃灰系列(六) 链接远程仓库

    文章目录 一.前言 二.使用Gitee链接远程仓库(免密登录) 2.1链接仓库 2.2使用指令上传远程仓库 三.利用GitHub连接远程仓库(免密登录) 一.前言 参考安装Git 详细安装教程 参考视 ...

  6. Git使用 从入门到入土 收藏吃灰系列 (八) 什么是分支 分支的作用

    文章目录 一.前言 二.Git分支 2.1什么是分支? 2.2 分支有什么用? 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『G ...

  7. Git使用 从入门到入土 收藏吃灰系列 (十三) git stash、git check-pick、git tag、git diff

    文章目录 一.前言 二.git stash 存储到堆栈 三.Git tag 标签 四.git cherry-pick 挑选合并 五.git diff 本节速览 git stash 堆栈 git tag ...

  8. 一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)

    1.info命令作用 在redis客户端执行INFO 命令以便于计算机解析和人工阅读的简单格式返回有关redis服务端的所有信息和统计数据. 可选参数可用于选择特定的信息部分: Server 服务器基 ...

  9. 最新版Zookeeper常用命令总结(收藏吃灰系列)

    1.服务端常用命令 在完成zookeeper的伪集群部署之后(部署教程参考linux上部署最新版本zookeeper伪分布式集群),可在bin目录下执行这些命令 启动ZK服务: bin/zkServe ...

最新文章

  1. Rust 所有权介绍
  2. ORA-01722: invalid number
  3. 点赞功能,用 MySQL?还是 Redis!
  4. 两种方式调试JNI中DLL(动态链接库)
  5. linux sed 找出前后三行,Linux Sed 使用示例
  6. pfx证书密码怎么查询_网站是HTTP?10分钟变成HTTPS!域名免费添加配置SSL证书,变成https//环境...
  7. MQ java.lang.OutOfMemoryError: unable to create new native thread
  8. python捕获信号退出_Python捕获信号退出Python中的捕获Ctrl+C/SIGINT,优雅地退出多个进程,python,在,CtrlCSIGINT,并...
  9. 安装FFmpeg后,发现没有生成ffplay的解决办法
  10. 项目服务器admin,django-admin创建项目与manage服务器的运行
  11. 【Java】JDK8新特性之函数式接口
  12. 小希的迷宫(请永远相信c语言的强大)
  13. tomcat启动很慢的解决方式
  14. Direct3D光与材质的颜色值
  15. 计算机图形学全代码,计算机图形学作业参考代码
  16. 刀片系统服务器优点,刀片服务器是什么?介绍ibm刀片服务器优点
  17. 数字华容道的数学原理
  18. matlab如何编newton-raphson,Matlab中的Newton-Raphson方法
  19. plsql能连mysql吗_明星就连拍结婚证件照,也能玩儿出花吗?
  20. gSkeletonClu: Revealing Density-Based Clustering Structure from the Core-Connected Tree of a Network

热门文章

  1. 考试成绩分析系统php,ASP考试成绩分析系统的设计与实现(源代码+论文)
  2. WORKNC 2022.1.2228_2022.10.30(免安装)
  3. 你见过什么天方夜谭的盈利项目吗?
  4. SDCC 2013:阿里周宝方谈“去IOE”战略及实施
  5. OmniGraffle 7 注册码
  6. 【安卓学习之微信抢红包】 微信抢红包 5 - 工具Android Monitor
  7. 好久不更了,写个中医的思考
  8. 【动态 | 麦肯锡报告:区块链距离商业化应用还有“三到五年”】
  9. TextMate 编辑 HTML 使用的快捷键记录
  10. python执行脚本失败恢复环境_Textmate 执行python脚本的错误:env: python3: No such file or directory...