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.pswp.cn/news/212850.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212850.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212850.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于hadoop下的spark安裝

目錄 簡介 安裝準備 spark安裝 配置文件配置 簡介 Spark主要?于?數據的并?計算,?Hadoop在企業主要?于?數據的存儲(?如HDFS、Hive和HBase 等),以及資源調度(Yarn)。但是也有很多公司也在使?MR2進…

【Spring教程24】Spring框架實戰:從零開始學習SpringMVC 之 SpringMVC入門案例代碼示例

目錄 1:創建Maven項目,并導入對應的jar包2:創建控制器類3:創建配置類4:創建Tomcat的Servlet容器配置類5:配置Tomcat環境6:啟動運行項目7:瀏覽器訪問8:知識點總結 歡迎大家回到《Java教程之Spring30天快速入門》,本教程所有示例均基于Maven實現&#xff0…

【數學建模】《實戰數學建模:例題與講解》第八講-回歸分析(含Matlab代碼)

【數學建模】《實戰數學建模:例題與講解》第八講-回歸分析(含Matlab代碼) 回歸分析基本概念經典多元線性回歸(MLR)主成分回歸(PCR)偏最小二乘回歸(PLS)建模過程應用和優勢…

2023年12月11日-12月17日(項目需求+ue5底層渲染)

可以試試每小時項目需求內容ue5底層渲染交替進行。 周一: 6:11–,ue5底層渲染02A15

C# List類常用操作 之 查找

// // // 作者:鳥哥 // // email:xiaoniao2003gmail.com // // using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization.Formatters;class Program {class Student{internal string Name;internal int Ag…

Pandas實踐_pandas基礎

文章目錄 一、文件的讀取和寫入1.文件讀取2.數據寫入 二、基本數據結構1.Series2.DataFrame 三、常用基本函數1.匯總函數2.特征統計函數3.唯一值函數4.替換函數5.排序函數6.apply方法 四、窗口對象1.滑窗對象2.擴張窗口 一、文件的讀取和寫入 1.文件讀取 pandas可以讀取的文件…

rust宏(macro)詳解

前言 rust 學習曲線非常陡峭,但是基本語法也還算挺好理解,自動內存管理有點類似智能指針,基本看一下語法入門就可以大概理解,但是唯獨宏很難理解,語法非常晦澀。但是功能非常強大。聲明宏類似于c語言的宏處理&#xf…

docker-ubuntu中基于keepalived+niginx模擬主從熱備完整過程

一、環境準備 🔗在Ubuntu中安裝docker 二、主機 1、環境搭建 1.1 鏡像拉取 docker pull ubuntu:16.041.2 創建網橋 docker network create -dbridge --subnet192.168.126.0/24 br11.3 啟動容器 docker run -it --name ubuntu-1 --privileged -v /home/vac/l…

為 Compose MultiPlatform 添加 C/C++ 支持(2):在 jvm 平臺使用 jni 實現桌面端與 C/C++ 互操作

前言 在上篇文章中我們已經介紹了實現 Compose MultiPlatform 對 C/C 互操作的基本思路。 并且先介紹了在 kotlin native 平臺使用 cinterop 實現與 C/C 的互操作。 今天這篇文章將補充在 jvm 平臺使用 jni。 在 Compose MultiPlatform 中,使用 jvm 平臺的是 An…

Kubernetes實戰(十)-升級k8s集群

1 Kubernetes(k8s) 集群升級過程 Kubernetes 使用 kubeadm 工具來管理集群組件的升級。在集群節點層面,升級 Kubernetes(k8s)集群的過程可以分為以下幾個步驟: 1)檢查當前環境和配置是否滿足升級要求。 2)升級master主節點&…

如何一個例子玩明白GIT

一個例子玩明白GIT GIT的介紹和教程五花八門,但實際需要用的就是建倉、推送、拉取等操作,這兒咱可以通過一個例子熟悉這些操作,一次性搞定GIT的使用方法學習。下面這個例子的內容是內容是建立初始版本庫,然后將數據復制到 "遠…

輕量封裝WebGPU渲染系統示例<45>- 材質組裝流水線(MaterialPipeline)燈光、陰影、霧(源碼)

當前示例源碼github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MaterialPipelineFog.ts 當前示例運行效果: 此示例基于此渲染系統實現,當前示例TypeScript源碼如下: export class MaterialPipelineFog {pr…

數組創建方法

數組的創建 1.let a[] 2.let anew Array(5) 3.let anew Array(1,2,3) 4.let a[1,2,3] 創建數組是空還是有值是以上四種寫法。但是如果沒給值的變量是undefined,再a[0]找不到這種變量的。所以當找某一個數需要已經是數組內存。不想給值可以給空數組。只要是數組…

MEMS制造的基本工藝介紹——晶圓鍵合

晶圓鍵合是一種晶圓級封裝技術,用于制造微機電系統 (MEMS)、納米機電系統 (NEMS)、微電子學和光電子學,確保機械穩定和氣密密封。用于 MEMS/NEMS 的晶圓直徑范圍為 100 毫米至 200 毫米(4 英寸至 8 英寸),用于生產微電…

【重點】【環鏈表入口】142. 環形鏈表 II

題目 public class Solution {public ListNode detectCycle(ListNode head) {if (head null || head.next null) {return null;}ListNode slow head, fast head;while (fast ! null && fast.next ! null) {slow slow.next;fast fast.next.next;if (slow fast) …

SQL語句---更新數據

介紹 使用sql語句更新數據。 命令 update 表名 set 字段1值1[,字段2值2] [where 條件表達式];[](方括號)內的表是表示可選。 例子 將a表id值等于1的數據的名稱改為666 update a set name666 where id1;

2023-12-05 Qt學習總結7

點擊 <C 語言編程核心突破> 快速C語言入門 Qt學習總結 前言二十 QTcpSocket QTcpServer網絡庫服務端代碼:客戶端代碼 二十一 QProcess進程類二十二 QThread線程總結 前言 要解決問題: 學習qt最核心知識, 多一個都不學. 二十 QTcpSocket QTcpServer網絡庫 QTcpSocket和…

持續集成交付CICD:Jenkins流水線實現Nexus制品晉級策略

目錄 一、理論 1.開發測試運維環境 二、實驗 1.Nexus制品晉級策略 一、理論 1.開發測試運維環境 &#xff08;1&#xff09;環境 1&#xff09;持續集成開發環境&#xff08;DEV: Development Environment&#xff09; 直接通過源代碼編譯打包&#xff0c;其會跑單元測試…

python 筆記 :trajectory_distance包(如何可以正確使用)【debug篇】

包的地址&#xff1a;maikol-solis/trajectory_distance (github.com) 1 模塊介紹 用Cython實現的Python模塊&#xff0c;用于計算二維軌跡之間的距離 trajectory_distance包提供了9種軌跡間的距離計算方法&#xff1a; SSPD&#xff08;對稱線段路徑距離&#xff09;OWD&a…

機器學習算法(9)——集成技術(Bagging——隨機森林分類器和回歸)

一、說明 在這篇文章&#xff0c;我將向您解釋集成技術和著名的集成技術之一&#xff0c;它屬于裝袋技術&#xff0c;稱為隨機森林分類器和回歸。 集成技術是機器學習技術&#xff0c;它結合多個基本模塊和模型來創建最佳預測模型。為了更好地理解這個定義&#xff0c;我們需要…