< 前言 >
我們在管理各個Linux專案時,最常使用的大概就是透過Git工具,來進行SDK的版本維護和管理。然而sdk內容的維護時常伴隨著非常多零散的提交,長久下來對於專案的管理者,或著是客戶使用者,想要查詢該SDK歷史紀錄時,內容經常是非常凌亂且難以查看。
如下舉例96fc56e到06d9baf可能是同一功能但不同地方的修改,但是卻提交了2次內容,類似的提交一旦變多了,整個觀看的頁面將變得非常凌亂,本文將說明如何將類似的提交,合併成為一個提交,整理成為一個較為乾淨的新的提交。
< Git rebase 命令 >
當提交太過於瑣碎凌亂時,可以透過rebase來整合過去的提交。
原本的提交樹如下:
$ git log --oneline
96fc56e Change sensor to os02k10 for NT98525(cfg_RTOS_BOOT_LINUX_EVB).
06d9baf Change sensor to os02k10.
96f23b8 Add .gitignore file.
475342c Remove redundant files, those files are no need to tracking.
a993c8d NT9852x_linux_sdk_fastboot_v2.04.000_glibc
在96fc56e和06d9baf為同一個功能但修改了不同的檔案,因此可以合併為同一個提交。96f23b8和475342c很明顯地看出是移除了原本a993c8d提交的一些檔案內容,因此96f23b8和475342c也可以合併為同一個提交,這時可以透過以下命令來開始進行整合提交:
$git rebase -i a993c8d
接著會出現編輯器視窗如下:
透過squash來決定那一個提交要整合進更前一個的提交,如下:
儲存後退出編輯器,由於要合併為一個新的提交,所以編輯器會提醒要編輯這個新的合併提交,這邊我們編輯為Remove all redundant files.
因為從4個分別合併為2個,因此會需要編輯兩次提交,第二次的提交為Support os02k10 driver
使用git log查看新的提交歷史紀錄,是不是變得比較乾淨和清楚了。