• [Git] 系列四Push & Pull —— Git 远程仓库和高级操作


    [Git] 系列四Push & Pull —— Git 远程仓库和高级操作

    Author: Xin Pan

    Date: 2022.11.06


    git fetch

    git fetch 完成了仅有的但是很重要的两步:

    • 从远程仓库下载本地仓库中缺失的提交记录
    • 更新远程分支指针(如 o/main)

    git fetch 并不会改变你本地仓库的状态。它不会更新你的 main 分支,也不会修改你磁盘上的文件。

    git pull

    更像是git fetchgit merge 的融合。

    git push

    提交本地代码到远程分支。

    git pull –rebase

    假设你周一克隆了一个仓库,然后开始研发某个新功能。到周五时,你新功能开发测试完毕,可以发布了。但是 —— 天啊!你的同事这周写了一堆代码,还改了许多你的功能中使用的 API,这些变动会导致你新开发的功能变得不可用。但是他们已经将那些提交推送到远程仓库了,因此你的工作就变成了基于项目旧版的代码,与远程仓库最新的代码不匹配了。

    这种情况下, git push 就不知道该如何操作了。如果你执行 git push,Git 应该让远程仓库回到星期一那天的状态吗?还是直接在新代码的基础上添加你的代码,亦或由于你的提交已经过时而直接忽略你的提交?

    因为这情况(历史偏离)有许多的不确定性,Git 是不会允许你 push 变更的。实际上它会强制你先合并远程最新的代码,然后才能分享你的工作。

    git pull --rebase
    git push
    
    • 1
    • 2

    合并特性分支

    这关和现实的情况很接近。

    在这里插入图片描述

    假设现在的人物是这样的。

    在这里插入图片描述

    我们可以通过如下命令完成

    # 拉取远程分支
    git fetch
    # 因为要合并多个分支需要多次变基
    git rebase o/main side1
    git rebase side1 side2
    git rebase side2 side3
    git rebase side3 main
    # 推送远程分支
    git push
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    同样的可以使用另一个方法来做同样的工作。merge。

    在这里插入图片描述

    # 为的是将每个特性分支合并到main上。先切到main上,拉取远端(因为可能会有更新,就像现在的截图里这样)
    git checkout main
    git pull
    git merge side1 
    git merge side2 
    git merge side3
    git push
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    删除一个远程分支

    git push origin :
    
    • 1
  • 相关阅读:
    GROUP BY与COUNT(也可以换成其他聚合函数)用法详解
    GeoServe Web 管理界面 远程访问
    最新gcc下载和linux环境变量设置
    Java模糊查询批量删除Redis的Key实现
    在同一台电脑布置多个git账号(解决克隆失败问题)
    2022-06-27 数据结构与算法-递归、冒泡、插入、选择排序
    一些 protobuf 的复盘(一)—— C++写完后的验证
    [Hot100]回文子串 与 最长回文子串
    Shader学习之路——凹凸映射
    EasyRecovery15万能数据恢复软件全面详细功能讲解
  • 原文地址:https://blog.csdn.net/panxin801/article/details/127955644