git merge某一次記錄

2022-06-23 10:45:12 字數 3218 閱讀 6422

**:

對於多分支的**庫,將**從乙個分支轉移到另乙個分支是常見需求。

這時分兩種情況。一種情況是,你需要另乙個分支的所有**變動,那麼就採用合併(git merge)。另一種情況是,你只需要部分**變動(某幾個提交),這時可以採用 cherry pick(俗稱:摘櫻桃)。

一、基本用法

$ git cherry-pick

上面命令就會將指定的提交commithash,應用於當前分支。這會在當前分支產生乙個新的提交,當然它們的雜湊值會不一樣。

舉例來說,**倉庫有masterfeature兩個分支。

a - b - c -d   master

\e - f - g feature

現在將提交f應用到master分支。

# 切換到 master 分支

$ git checkout master

# cherry pick 操作

$ git cherry-pick f

上面的操作完成以後,**庫就變成了下面的樣子。

a - b - c - d -f   master

\e - f - g feature

從上面可以看到,master分支的末尾增加了乙個提交f

git cherry-pick命令的引數,不一定是提交的雜湊值,分支名也是可以的,表示轉移該分支的最新提交。

$ git cherry-pick feature

cherry pick 支援一次轉移多個提交。

$ git cherry-pick > >

上面的命令將 a 和 b 兩個提交應用到當前分支。這會在當前分支生成兩個對應的新提交。

如果想要轉移一系列的連續提交,可以使用下面的簡便語法。

$ git cherry-pick a..b 

上面的命令可以轉移從 a 到 b 的所有提交。它們必須按照正確的順序放置:提交 a 必須早於提交 b,否則命令將失敗,但不會報錯。

注意,使用上面的命令,提交 a 將不會包含在 cherry pick 中。如果要包含提交 a,可以使用下面的語法。

$ git cherry-pick a^..b 

git cherry-pick命令的常用配置項如下。

(1)-e--edit

開啟外部編輯器,編輯提交資訊。

(2)-n--no-commit

只更新工作區和暫存區,不產生新的提交。

(3)-x

在提交資訊的末尾追加一行(cherry picked from commit ...),方便以後查到這個提交是如何產生的。

(4)-s--signoff

在提交資訊的末尾追加一行操作者的簽名,表示是誰進行了這個操作。

(5)-m parent-number--mainline parent-number

如果原始提交是乙個合併節點,來自於兩個分支的合併,那麼 cherry pick 預設將失敗,因為它不知道應該採用哪個分支的**變動。

-m配置項告訴 git,應該採用哪個分支的變動。它的引數parent-number是乙個從1開始的整數,代表原始提交的父分支編號。

$ git cherry-pick -m 1 >

上面命令表示,cherry pick 採用提交commithash來自編號1的父分支的變動。

一般來說,1號父分支是接受變動的分支(the branch being merged into),2號父分支是作為變動**的分支(the branch being merged from)。

如果操作過程中發生**衝突,cherry pick 會停下來,讓使用者決定如何繼續操作。

(1)--continue

使用者解決**衝突後,第一步將修改的檔案重新加入暫存區(git add .),第二步使用下面的命令,讓 cherry pick 過程繼續執行。

$ git cherry-pick --continue

(2)--abort

發生**衝突後,放棄合併,回到操作前的樣子。

(3)--quit

發生**衝突後,退出 cherry pick,但是不回到操作前的樣子。

cherry pick 也支援轉移另乙個**庫的提交,方法是先將該庫加為遠端倉庫。

$ git remote add target git://giturl

上面命令新增了乙個遠端倉庫target

然後,將遠端**抓取到本地。

$ git fetch target
上面命令將遠端**倉庫抓取到本地。

接著,檢查一下要從遠端倉庫轉移的提交,獲取它的雜湊值。

$ git log target/master

最後,使用git cherry-pick命令轉移提交。

$ git cherry-pick >

記錄一次面試

怎麼觀察系統中 記憶體 行為 a.通過 proc zoneinfo 檔案,可以看到 free high low min pages 關係 free high 時候 一般不開啟 kswapd 執行緒 high free low 時,開啟 kswapd 執行緒 low free min時,alloc p...

記錄一次oracle使用記錄

使用oracle資料庫的專案到我這邊,需要修改,咱雖然 學過 oracle,但那畢竟已經過去了。哈哈。使用database configuration assistant 建立資料庫,建立快完的時候,說我沒有監聽啥的,然後 通過 net manager 建立了,qizhong1 其中選中的那個就是建...

記錄一次ko編譯

最近接觸乙個專案,需要編譯ko檔案,從來沒有接觸過,先問自己四個問題 什麼是ko檔案 ko檔案是kernel object檔案 核心模組 該檔案的意義就是把核心的一些功能移動到核心外邊,需要的時候插入核心,不需要時解除安裝。如何製作ko檔案 環境配置 1.export path path media...