Git merge 与 Git rebase 与 Git fetch

Git merge 与 Git rebase

看这个图就行了

git mergegit rebasegit fetch 是 Git 中的三个不同的命令,它们分别用于不同的目的。以下是它们的主要区别:

  1. git merge(合并):

    • 用途: 用于将一个分支的更改合并到另一个分支。
    • 特点: 创建一个新的合并提交,将两个分支的历史合并在一起。产生一个合并的分支历史,可以保留原始分支的完整历史。
    • 适用场景: 通常用于将一个分支的更改合并到另一个分支,保留清晰的分支分离。
    # 示例:将 feature-branch 的更改合并到 main 分支
    git checkout main
    git merge feature-branch
    
  2. git rebase(变基):

    • 用途: 用于将一个分支的更改合并到另一个分支,但与合并不同,它创建一个线性的提交历史。
    • 特点: 移动或合并提交,将当前分支的更改应用在目标分支的最新提交之上。不会创建合并提交,使提交历史更为线性。
    • 适用场景: 用于保持提交历史的干净和线性,特别是在为拉取请求准备分支时。
    # 示例:将 feature-branch 的更改变基到 main 分支
    git checkout main
    git rebase feature-branch
    
  3. git fetch(难点):

    • 用途: 从远程存储库中获取最新的更改,但不自动合并到当前工作分支。
    • 特点: 更新本地仓库的远程跟踪分支,使它们反映远程存储库的最新状态,但并不会更改工作目录中的文件。
    • 适用场景: 用于查看远程仓库的最新更改,然后决定是否将这些更改合并到本地分支。

记住这个就够了

git pull = git fetch + git merge

# 示例:获取远程仓库的最新更改,但不合并到当前分支
git fetch origin

假设你有一个远程仓库(通常称为 “origin”)和一个本地分支(例如,main 分支)。在远程仓库中,有一些新的提交,但你的本地仓库并没有跟踪这些更改。

执行 git fetch 的过程如下:

  1. 查看当前状态: 在执行 git fetch 之前,你可以使用以下命令查看当前状态:

    git status
    

    如果有未提交的更改,可以选择提交或者保存更改。

  2. 执行 git fetch 执行以下命令:

    git fetch origin
    

    这会将远程仓库(origin)的最新更改拉取到本地,但并不会自动合并到你的当前分支。

  3. 查看新的分支状态: 查看远程仓库的分支状态,可以使用以下命令:

    git branch -a
    

    这将显示本地分支和远程分支的列表。你会看到类似 origin/main 的远程分支。

  4. 切换到本地分支: 如果你想要合并这些远程更改到你的本地分支,可以执行以下命令:

    git checkout main
    

    或者使用以下命令创建并切换到一个新的本地分支:

    git checkout -b new-branch-name origin/main
    

    这将创建一个新的本地分支,并将其设置为跟踪远程仓库的 main 分支。

  5. 查看新的更改: 查看本地分支的最新更改:

    git log
    

    这将显示远程仓库的最新提交,你可以选择合并或者进一步处理这些更改。

git fetch 用于获取远程仓库的最新更改,但不会自动将其合并到当前分支。这使你能够在决定是否合并之前查看和理解远程仓库的更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/263660.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dToF直方图之美_激光雷达多目标检测

直方图提供了一种简单有效的方法来分析信号分布并识别与目标存在相对应的峰值,并且能够可视化大量数据,让测距数形结合。在车载激光雷达中,对于多目标检测,多峰算法统计等,有着区别于摄像头以及其他雷达方案的天然优势。 如下图,当中有着清晰可见的三个峰值,我们可以非…

8利用路由器实现VLAN间路由

在第五节里聊过虚拟局域网构建,不同的虚拟局域网不能通信。但有时候,想让不同的虚拟局域网之间能够通信,需要怎么做? 主要有以下三种方式: 如果使用传统VLAN间路由,缺点比较多,后面有机会的话也…

什么是Linux权限

Linux权限 文章目录 Linux权限一、root账号与普通账号二、Linux权限管理三、权限权值表示方法四、文件访问权限的设置方法五、粘滞位六、权限总结 前言: 我们在学习Linux的时候,我们知道在Linux下一切皆文件,而不同的文件对于不同的用户有不同…

【杂项】程序的执行目录和程序的当前目录

当32位应用程序运行时,系统将为它分配一个4GB的地址空间,加载模块会会分析该应用程序的输入信息,从中找到程序将要访问的动态链接库信息,在用户机器上搜索这些动态链接库,进而加载它们,搜索的顺序依次是 程…

最短路径问题

BFS: Dijkstra: Floyd: 多个中转点:可以解决负权值带权图; 总结:

什么是高防IP,高防IP该如何选择。

高防IP,指的是高防御能力的IP地址。在互联网的世界里,网络安全问题成为一个重要的话题。作为一个用户,你是否曾遇到过被黑客攻击造成的网站瘫痪、信息泄露等问题?如果你是一个企业,你是否考虑过自己公司的网站和业务的…

Unity DOTS中的baking(一) Baker简介

Unity DOTS中的baking(一) Baker简介 baking是DOTS ECS工作流的一环,大概的意思就是将原先Editor下的GameObject数据,全部转换为Entity数据的过程。baking是一个不可逆的过程,原先的GameObject在运行时不复存在&#x…

vscode 编译运行c++ 记录

一、打开文件夹,新建或打开一个cpp文件 二、ctrl shift p 进入 c/c配置 进行 IntelliSense 配置。主要是选择编译器、 c标准, 设置头文件路径等,配置好后会生成 c_cpp_properties.json; 二、编译运行: 1、选中ma…

Kubernetes -Kubernetes中的Network组件

Network是Kubernetes体系中的重头戏,相比于其它组件来说也比较难,因为Kubernetes中所有的Pod或者服务之间一定是需要进行网络通信的,如果不能解决网络通信的问题,那可以说整个Kubernetes体系中的Pod是没有灵魂的。 所以必须要把N…

最新接口自动化测试面试题

前言 前面总结了一篇关于接口测试的常规面试题,现在接口自动化测试用的比较多,也是被很多公司看好。那么想做接口自动化测试需要具备哪些能力呢? 也就是面试的过程中,面试官会考哪些问题,知道你是不是真的做过接口自…

【K8S in Action】服务:让客户端发现pod 并与之通信(1)

服务是一种为一组功能相同的 pod 提供单一不变的接入点的资源。当服务存在时,它的 IP 地址和端口不会改变。 客户端通过 IP 地址和端口号建立连接, 这些连接会被路由到提供该服务的任意一个 pod 上。 pod 是短暂,会删除增加,调度…

从零开发短视频电商 在AWS SageMaker已创建的模型列表中进行部署

1.导航到 SageMaker 控制台。 2.在 SageMaker 控制台的左侧导航栏中,选择 “模型” 选项。 3.在模型列表中,找到您要部署的模型。选择该模型。 4.点击 “创建端点” 选项或者点击 “创建端点配置” 选项都可以进行部署。 选择创建端点进去后还是会进行…